閉包:
在乙個外函式中定義了乙個內函式,內函式裡運用了外函式的臨時變數,並且外函式的返回值是內函式的引用。這樣就構成了乙個閉包。
def fun1(x):
def fun2(y)
return x*y
return fun2
>>fun1(3)(3)
>>9
def outer( a ):
b = 10
# inner是內函式
def inner():
#在內函式中 用到了外函式的臨時變數
print(a+b)
# 外函式的返回值是內函式的引用
return inner
>>outer(3)()
>>13
def fun1():
x=5def fun2(y):
x*=x
return x
return fun2
這樣的話,會報錯,因為此時的x被認為是區域性變數
可改為:
def fun1():
x=5def fun2():
nonlocal x
x*=x
return x
return fun2
python 閉包 python 閉包
閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...
python學習筆記 閉包
乙個函式a和乙個函式b,其中b函式位於a函式體內部,同時b函式體內呼叫了b函式之外,a函式之內的其他變數x 包括a中傳遞過來的引數 此時,x稱為b函式的環境變數,b函式和變數x就構成了乙個閉包。而函式b是需要返回的,也就是返回函式b,其中在返回的時候,對a引數x的呼叫也包括在了裡面,有點封閉包含的意...
Python學習筆記 閉包
在學習閉包之前,我們先要弄懂一件事兒。同理 test其實就是乙個變數,變數中存放著函式體的位址,就像a變數中存放著100的位址一樣。t test實質上就是淺拷貝行為。將變數test中的位址存放到變數t中 我們如果要呼叫test函式,test 當t獲取了函式體的位址後,同樣可以以t 的形式呼叫函式 注...