python簡單理解迭代器,生成器,裝飾器

2021-08-21 08:52:27 字數 945 閱讀 8172

迭代器;

是什麼:是乙個抽象的概念,任何物件,如果它實現了next方法和iter方法,就是迭代器。next方法要麼返回迭代中的下一項,要麼返回乙個stapiteration異常,iter方法要返回乙個迭代器物件,而它本身就是乙個迭代器物件,所有返回自己本身。

作用:像我們提供乙個中間人即迭代器幫助我們迭代遍歷使用

for迴圈其實就實現了迭代器的功能,在遍歷list,string,dict,tuple這些容器時,在 for語句對容器物件呼叫的iter()方法返回乙個定義next()方法的迭代器物件,它在函式中逐個訪問容器內的元素,next和iter都是python內建函式。

生成器:

是什麼:生成器是一種特殊的迭代器,在函式中有yield關鍵字就可以說是生成器。

怎麼用:呼叫next(),就會返回yield後面的值,生成器掛起,再次使用next就從上次停止的位置繼續執行。

作用:延遲計算,一次返回乙個結果。當我們需要結果的時候才會呼叫,而不是一次返回所有的結果。 也就是說,它不會一次生成所有的結果,這對於大資料量處理,將會非常有用。

建立方法:1.把列表生成式的[ ]改為()就是乙個簡單的列表生成器

2.使用yield關鍵字

生成器和迭代器的區別:生成器能做到迭代器能做到的所有事,因為自動建立iter方法和next方法,顯的比較簡潔,高效。使用生成器表示式比列表解析要節省記憶體(前者是需要的時候才呼叫next返回乙個值,後者直接返回乙個列表),自動丟擲stopiteration異常

裝飾器:在不改變已存在的物件的功能情況下新增額外的功能

defset_fun

(func):

call_fun(*arge,**kwargs):

reurn func(*arge,**kwargs)

return call_fun

作用:引用日誌,函式執行預計時間,許可權校驗,快取等

python迭代器簡單理解

1 凡是可應用於for迴圈的物件都是可迭代 可迴圈 iterable 物件,例如字串 列表 元組 字典 集合等 2 凡是可應用於next 方法的物件都是迭代器 iterator 物件,迭代器 iterator 是乙個惰性計算的過程,只有在需要返回下乙個數值的時候才會被計算 這一過程跟生成器很像,都是...

簡單理解Python迭代器

在使用列表時,直接將資料存入列表將會佔據大量空間,且復用率較低,為解決這個問題,這裡了解一下迭代器,從而建立一種資料產生的方式,以此來節省空間。注意,這裡需要使用到內建函式 iter 簡單理解為,使用了 iter 才會是乙個可迭代物件,關於這部分,我們可以對一些物件做一些判斷,從而清楚是不是可迭代物...

生成器 迭代器理解

def consumer r while true n yield r 第2步 yield接收,n none 第4步 n 1 第6步 返回 r 200 ok 備註 n 是收到生產者的資料 賦值給 n r 是返回給生產者的資料.if not n return print 消費者 consuming s...