2.閉包格式
return bar --》返回內嵌函式
in = test()
print(in())
3.使用原理
4.總結:
二、裝飾器
2.格式
return test_in --》閉包函式返回內嵌函式
@test --》aa=test(aa) -->裝飾
def aa(): -->這兒如果有引數,test_in也必須有一樣的引數,test_in中fun() 呼叫也需一樣的引數
aa() 呼叫 在呼叫之前就裝飾好了
結果為3.裝飾器使用不定長引數形成通用介面卡
return test2
@test1 # aa = test1(aa)
def aa():
@test1 # bb = test1(bb)
def bb(*args):
@test1 # bb = test1(bb)
def cc(**kwargs):
@test1
def dd(*args,**kwargs):
aa() -->------aaaaaaaaa------
bb(2,3) -->---------bbbbbbbbb------- (2,3)
cc(name="hello",age=20) --> ---------ccccccccccc-------
dd(1,2,3,name="hello",age=20) -->---------dddddddd------- (1,2,3)
4.類裝飾器
def __call__(self): --》裝飾器功能,call方法使用物件() 呼叫
@test
def test():
test()
結果說明:
5.多層裝飾器
return test1
def decorator2(func):
return test2
@decorator2 -->第二層包裝 (執行時先執行第二層包裝)
@decorator1 -->第一層包裝(先使用第一層包裝)
def func():
func()
結果:6.帶引數的裝飾器
return test2
return test1
@test(2) -->num==2 >>必須帶引數
def func():
func()
結果7.總結
8.拓展
Python閉包 裝飾器
閉包 legb法則 所謂閉包,就是將組成函式的語句和這些語句的執行環境打包一起時得到的物件 閉包最重要的價值在於封裝上下文環境 下面有個列子來解釋下閉包 列 deffunx x print 開始 deffuny y returnx y print 結束 returnfuny x funx 4 pri...
閉包 裝飾器
外部函式返回內部函式的引用 內部函式可以直接使用外部函式的環境變數 語法 外部函式通過返回內部函式的引用 內部函式可以直接使用外部函式的 環境變數 自由變數 函式執行時間統計 執行函式前預備處理 執行函式後清理功能 許可權校驗等場景 快取有且只有乙個引數 指向了被裝飾的函式的引用 使用裝飾器 裝飾器...
閉包,裝飾器
多層函式巢狀,函式裡面還有定義函式,一般是兩個 往往內層函式會用到外層函式的變數,把內層函式以及外部函式的變數當成乙個特殊的物件,這就是閉包。閉包比物件導向更純淨 更輕量,既有資料又有執行資料的 比普通函式功能更強大,不僅有 還有資料 利用閉包的基本原理,對乙個目標函式進行裝飾,即在執行乙個目標函式...