Python高階程式設計

2022-08-27 21:27:14 字數 1469 閱讀 1578

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...