07 Python 迭代器 生成器 裝飾器 閉包

2022-08-14 20:27:16 字數 1193 閱讀 3383

目錄2、生成器

3、裝飾器

4、閉包

【它基於兩個方法】

def generator_function():

for i in range(10):

yield i

for i in generator_function():

print(i)

#定義乙個函式裝飾器

def foo(func):

print('裝飾器 runing')

f = func(*args, **kw)

print('裝飾器 ending')

return f

@foo #使用裝飾器

def bar():

print('bar')

if __name__ == '__main__':

bar()

# 輸出結果:

'''類裝飾器 runing

bar類裝飾器 ending

'''

# 定義乙個類裝飾器

class foo(object):

def __init__(self, func):

self._func = func

def __call__(self):

print ('類裝飾器 runing')

self._func()

print ('類裝飾器 ending')

@foo

def bar():

print ('bar')

if __name__ == '__main__':

bar()

# 輸出結果:

'''類裝飾器 runing

bar類裝飾器 ending

'''

def func(name):

def inner_func(age):

print('name:', name, 'age:', age)

return inner_func

if __name__ == '__main__':

tom = func('tom')

tom(10)

# 輸出結果:

'''name: tom age: 10

'''

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...

python 迭代器 生成器

知識背景 1 呼叫乙個普通的python函式時,一般是從函式的第一行 開始執行,結束於return語句 異常或者函式結束 可以看作隱式的返回none 2 一旦函式將控制權交還給呼叫者,就意味著全部結束。函式中做的所有工作以及儲存在區域性變數中的資料都將丟失 3 再次呼叫這個函式時,一切都將從頭建立。...