list comprehension
1.列表推導 [i for i in range(10) if i%2 == 0] -> [0, 2, 4, 6, 8], i也可以是乙個函式,該風格比c語言思想的**風格效率高
2.enumerate 取到了序列中的序列號好內容
forindex, item
inenumerate(sequence):
process(index, item)
迭代器:要建立定製的迭代器,可以編寫乙個具有next方法的類,只要該類能夠提供返回迭代器例項(self)發__iter__特殊方法
__iter__ 返回迭代器本身 i = iter('abc')
生成器:基於yield指令,可以暫停乙個函式並返回中間結果,該函式將儲存執行環境並可以在必要時恢復,不能有return,yield這與return的情況不同。return是真正的離開**塊,所以會在return時立刻執行finally子句而yield不會。
yield將返回乙個generator物件,為乙個特殊的迭代器
send,send的工作機制與next一樣,但yield將變成能夠返回傳入的值, 例項.send("***") value = (yield) 可以根據客戶端**來改變其行為
throw,close 例項.throw() 傳入要丟擲的任何型別的異常 這個方法用於關閉生成器。對關閉的生成器後再次呼叫next或send將丟擲stopiteration異常。
協同程式(trampoline, multitask, cintextlib, greenlet):可以掛起/恢復,並且有多個進入點的函式,類似執行緒,但不用資源鎖,生成器幾乎就是協調程式
生成器表示式:(x**2 for x in range(10) if x%2 == 0)
好文介紹:
itertools模組:包括islice,tee,groupby模式
裝飾器:
包括編寫裝飾器,引數檢查,快取,**,上下文提供者
with和contextlib
舉例: with file('path') as hosts:
可替代:
hosts = file('path')
try:
finally:
hosts.close()
python類:
避免多重繼承
super必須使用一致,都是用super或不是用super
不要混用老式和新式類
呼叫父類時必須檢查類層次
類描述符:自定義在引用乙個物件上的特性時所應完成的事情
描述符類必須實現三個方法:
__set__,__get__, __delete__
python程式設計高階
1 開閉原則 遵循開發封閉原則,雖然在這個原則是用的物件導向開發,但是也適用於函式式程式設計,簡單來說,它規定已經實現的功能 不允許被修改,但可以被擴充套件,即 封閉 已實現的功能 塊 開放 對擴充套件開發 2 可使用裝飾器實現開閉原則 裝飾器是不對原函式內部 進行修改的前提下,在外部增加一些功能,...
python高階程式設計
包和模組的概念及is和 的區別1.包 包含多個python檔案 模組的資料夾,並且資料夾中有乙個名稱為init.py的特殊宣告檔案,那麼這個資料夾就是乙個包 模組包 可以將大量功能相關的python模組包含起來統一管理,同樣也可以被其他模組通過import關鍵字引入重複使用封裝的模組和 2.模組 p...
python 高階程式設計 三
decorator 作用在某個函式上面,將其函式指標作為引數傳入,然後新增一些操作,最後返回原來函式 兩種方式,一種是無參的 def decorator func def new func args,kws print add some operations func args,kws return...