純乾貨-超級實用的python小技巧
鏈式比較操作
你可能認為它執行的過程先是:,返回,然後再比較,當然這麼做也是返回,比較表達式,因為解釋器會把轉換成,轉換成。但這裡的鏈式比較解釋器在內部並不是這樣乾的,它會把這種鏈式的比較操作轉換成:,不信你可以看看最後一個例子。這樣的鏈式操作本可以值得所有編程語言擁有,但是很遺憾
枚舉
用enumerate包裝一個可迭代對象,可以同時使用迭代項和索引,如果你不這麼乾的話,下面有一種比較麻煩的方法:
enumerate 還可以接收一個可選參數start,默認start等於0。,這樣index的起始值就是1
生成器對象
你可以把生成器對象賦值給x,意味著可以對x進行迭代操作:
它的好處就是不需要存儲中間結果,也許你會使用(列表推倒式):
它比生成器對象能帶來更快的速度。相對地,生成器更能節省內存開銷,它的值是按需生成,不需要像列表推倒式一樣把整個結果保存在內存中,同時它不能重新迭代,列表推倒式則不然。
iter()可接收callable參數
iter()內建函數接收的參數分為兩種,第一種是:
參數collection必須是可迭代對象或者是序列 ,第二種是:
callable函數會一直被調用,直到它的返回結果等於sentinel,例如:
小心可變的默認參數
取而代之的是你應該使用一個標記值表示「沒有指定」來替換可變值,如:
發送值到生成器函數在中
你可以:
如果你不喜歡使用空格縮進,那麼可以使用C語言花括弧{}定義函數:
>>>from__future__importbraces#這裡的braces 指的是:curly braces(花括弧)
File"",line1
SyntaxError:notachance
當然這僅僅是一個玩笑,想用花括弧定義函數?沒門。感興趣的還可以了解下:
不過這是python3裡面的特性
切片操作中的步長參數
還有一個特例:,反轉列表:
有關反轉,還有兩個函數reverse、reversed,reverse是list對象的方法,沒有返回值,而reversed是內建方法,可接收的參數包括tuple、string、list、unicode,以及用戶自定義的類型,返回一個迭代器。
裝飾器
裝飾器使一個函數或方法包裝在另一個函數裡頭,可以在被包裝的函數添加一些額外的功能,比如日誌,還可以對參數、返回結果進行修改。裝飾器有點類似Java中的AOP。下面這個例子是列印被裝飾的函數裡面的參數的裝飾器,
@是語法糖,它等價於:
for … else語法
else代碼塊會在for循環正常結束後執行,除非遇到break(就不會執行),它等價於下面:
不過這種語法看起來怪怪地,讓人感覺是else塊是在for語句塊沒有執行的時候執行的,很容易讓人去類比 if else 的語法,如果是把else換成finally或許更容易理解
python2.5有個方法
dict的子類如果定義了方法,如果key不再dict中,那麼d[key]就會調用方法,而且d[key]的返回值就是的返回值。
在collections模塊下有一個叫defaultdict的dict子類,它與missing非常類似,但是對於不存在的項不需要傳遞參數。
※Selenium中級篇之5-Python讀取配置文件內容
※Python培訓必知 python老鳥才知道的那些事
※深入理解 GIL:如何寫出高性能及線程安全的 Python 代碼
※【快學Python3】解析器
※2017 年最流行的 15 個數據科學 Python 庫
TAG:python |
※photoshop的六個實用小技巧
※6個超實用的iPhone功能和技巧
※【Photoshop的小技巧】
※使用chrome的小技巧
※toString 小技巧
※5個iPhone使用小技巧
※iPhone X的使用技巧
※必學的超實用Photoshop技巧方法&快捷鍵集
※實用!3個Office通用的小技巧
※Spring Cloud實戰小技巧必殺技
※Python 中查詢 sqlite3 的一些小技巧
※小技巧:Windows 10 Mobile中啟用Microsoft Edge PWA服務
※簡單粗暴的iPhone實用技巧,全篇乾貨
※簡單卻超實用的8個Excel小技巧!
※3個實用Excel小技巧
※分享下最實用的iphonex操作技巧,速入門玩轉iphoneX
※簡單粗暴的iPhone實用技巧
※photoshop新手必看的120條實用技巧!
※npj Computational Materials:快速準確預測晶格熱導率的「小技巧」
※iPhone原生應用技巧Ⅱ:3D touch還有這些冷門技巧!