閉鎖機能
定義された閉鎖機能
クロージャ:閉じた(内部関数の関数)を閉じるには、(内部関数への参照ではなく、グローバルスコープの変数外側範囲)を含むパッケージです。
閉鎖手段:外部参照の内部機能の機能、およびグローバルスコープのない範囲です。
例の閉鎖機能
import requests
def outter(url):
def get():
response = requests.get(url)
print(f"done: {url}")
return get
baidu=outter('https://www.baidu.com')
python = outter('https://www.python.org')
baidu()
baidu()
python()
python()
レイヤーデコレータ
装飾的な定義
デバイスは、ツールを参照して、プログラムの機能は、機能ツールを持つことである、それはデコレータオブジェクトに追加機能を追加するためにデコレータを指します。したがって、デコレータの定義は、関数の定義があるが、関数の機能は他の機能に追加機能を追加するために使用されます。
デコレーター原理
デコレータを達成するための2つの原則に従う必要があります。
- 装飾された対象物のソースコードを変更しません
- コールは、装飾品の仕方を変更しません
レイヤデコレータテンプレート
def outter(func):
def innter(*args,**kwargs):
# 代码块 需要实现的功能
res = func(*args,**kwargs)
return res
return innter
三のデコレータ
レイヤレイヤ外デコレータデコレータはその後、機能をラップされているパラメータは、レイヤデコレータを渡され、
def sanceng(engine):
def outter(func):
def wrapper(*args, **kwargs): # wrapper是未来要运行的函数
# 加功能
res = func(*args, **kwargs) # func是被装饰的函数
return res
return wrapper
return outter
イテレータ導入
定義は、反復可能オブジェクト:__ iter__メソッドが呼び出された反復可能オブジェクトを
__ iter__とイテレータと呼ば__ next__方法:定義イテレータあり