閉包:python函數(shù)的內(nèi)部的變量離開這個函數(shù)就失去了作用域而不復(fù)存在
但是嵌套函數(shù)可以!
def fn1():
x = 1
def fn2():
def fn3():
print(x)
return fn3
return fn2
a = fn1()()()
解析: x是屬于fn1函數(shù)的,但是在 fn1()調(diào)用結(jié)束后 我們又加了兩個括號調(diào)用到了fn3,你看他還是能輸出x的值
但嵌套函數(shù)只是引用它!不能修改它,要在嵌套函數(shù)里修改x的值需要申明nonlocal x
def fn1():
x = 1
def fn2():
def fn3():
noncal x
x+=1
print(x)
return fn3
return fn2
a = fn1()()()
工廠函數(shù):
函數(shù)return的時候返回一個函數(shù)名