python筆記 閉包

2021-10-06 10:49:05 字數 620 閱讀 9834

閉包: 

在乙個外函式中定義了乙個內函式,內函式裡運用了外函式的臨時變數,並且外函式的返回值是內函式的引用。這樣就構成了乙個閉包。

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 的形式呼叫函式 注...