學python90%人的不知道的,python使用小計巧 (有程式碼)
這些小技巧,小編用的非常上手,所以分享出來,希望對你有幫助。
顯示有限的介面到外部
當釋出python第三方package時, 並不希望程式碼中所有的函式或者class可以被外部import,在__init__.py中新增__all__屬性,該list中填寫可以import的類或者函式名,可以起到限制的import的作用,防止外部import其他函式或者類。
小編建了一個學習Q群883444106,裡面有很多的python學習大牛,歡迎小夥伴的加入
with的魔力
with語句需要支援上下文管理協議的物件, 上下文管理協議包含__enter__和__exit__兩個方法。with語句建立執行時上下文需要通過這兩個方法執行進入和退出操作。
其中上下文表達式是跟在with之後的表示式, 該表示大返回一個上下文管理物件。
詳細原理可以檢視這篇文章, 淺談 Python 的 with 語句。
知道具體原理,我們可以自定義支援上下文管理協議的類, 類中實__enter__和__exit__方法。
執行結果如下:
883444106
證明了會先執行__enter__方法,然後呼叫with內的邏輯,最後執行__exit__做退出處理,並且, 即使出現異常也能正常退出。
filter的用法
相對filter而言, map和reduce使用的會更頻繁一些, filter正如其名字, 按照某種規則過濾掉一些元素。
QQ群
一行作判斷
當條件滿足時, 返回的為等號後面的變數, 否則返回else後語句。
裝飾器之單例
使用裝飾器實現簡單的單例模式。
staticmethod裝飾器
類中兩種常用的裝飾,首先區分一下他們。
普通成員函式, 其中第一個隱式引數為物件;
classmethod裝飾器,類方法(給人感覺非常類似於OC中的類方法), 其中第一個隱式引數為類;
staticmethod裝飾器,沒有任何隱式引數。python中的靜態方法類似與C++中的靜態方法。
定義私有類屬性
將property與裝飾器結合實現屬性私有化(更簡單安全的實現get和set方法)。
fget是獲取屬性的值的函式,fset是設定屬性值的函式,fdel是刪除屬性的函式,doc是一個字串(like a comment)。從實現來看,這些引數都是可選的。
property有三個方法getter(),setter()和delete()來指定fget,fset和fdel。 這表示以下這行:
iter魔法
通過yield和__iter__的結合, 我們可以把一個物件變成可迭代的。
通過__str__的重寫,可以直接通過想要的形式列印物件。
partial使用上很像C++中仿函式(函式物件)。
在stackoverflow給出了類似與partial的執行方式。
利用用閉包的特性繫結預先繫結一些函式引數,返回一個可呼叫的變數, 直到真正的呼叫執行。
神祕eval
eval我理解為一種內嵌的python直譯器(這種解釋可能會有偏差), 會解釋字串為對應的程式碼並執行, 並且將執行結果返回。
看一下下面這個例子:
exec
exec在Python中會忽略返回值, 總是返回None,eval會返回執行程式碼或語句的返回值。
exec和eval在執行程式碼時,除了返回值其他行為都相同。
在傳入字串時,會使用compile(source, '
getattr
通過string型別的name,返回物件的name屬性(方法)對應的值,如果屬性不存在,則返回預設值,相當於object.name。
命令列處理
讀寫csv檔案
883444106
小編建了一個學習Q群883444106,裡面有很多的python學習大牛,歡迎小夥伴的加入
各種時間形式轉換
只發一張網上的圖, 然後差文件就好了, 這個是記不住的。
字串格式化
一個非常好用,很多人又不知道的功能。