作用:使函式外部能訪問函式內部區域性變數,且當函式完後依然可以儲存該變數
**特徵:**函式內部巢狀,內部函式訪問外部函式區域性變數,外部函式返回內部函式位址(或者直接呼叫內部函式)
defa(
):num=
4deff(
):print
(num)
return f
b=a()b(
)
或者
defa(
):num=
4deff(
):print
(num)
f()b=a(
)
**作用-**在不修改原函式的基礎上擴充套件該函式
**特徵-**裝飾器函式巢狀,外部裝飾器函式引數為需擴充套件的函式位址,返回值為內部函式位址,內部函式引數為需擴充套件的函式的引數,內容為新增內容加呼叫原函式
defa(
):print
("----------我是乙個a-----------"
)def
b(func)
:def
adoner()
:print
("----------begin-----------"
) func(
)print
("----------end-----------"
)return adoner
b(a)
()
帶引數的:
def
a(s)
:print
("----------我是乙個%s-----------"
%s)def
b(func)
:def
adoner
(s):
print
("----------begin-----------"
) func(s)
print
("----------end-----------"
)return adoner
b(a)
("s"
)
帶動態引數的:
def
a(w,a,b)
: s=w+a+b
print
("----------"
+s+"-----------"
)def
b(func)
:def
adoner
(*args,
**kwargs)
:print
("----------begin-----------"
) func(
*args,
**kwargs)
print
("----------end-----------"
)return adoner
b(a)
("wo"
,"shi"
,"s"
)
Python函式閉包裝飾器
x 2222 print x def func1 x 65842 deffunc2 x 65412 print x func2 func1 print x 2222 65412 2222 global 呼叫全域性變數 x 8888 deffunc1 deffunc2 global x x 10000...
Python閉包 裝飾器
閉包 legb法則 所謂閉包,就是將組成函式的語句和這些語句的執行環境打包一起時得到的物件 閉包最重要的價值在於封裝上下文環境 下面有個列子來解釋下閉包 列 deffunx x print 開始 deffuny y returnx y print 結束 returnfuny x funx 4 pri...
python 閉包 裝飾器
2.閉包格式 return bar 返回內嵌函式 in test print in 3.使用原理 4.總結 二 裝飾器 2.格式 return test in 閉包函式返回內嵌函式 test aa test aa 裝飾 def aa 這兒如果有引數,test in也必須有一樣的引數,test in中...