從表現形式上定義為:如果在一個內部函數如下面代碼中的funY函數
對其外部作用域funX函數
進行變量(x
)引用,那么我們說這個內部函數funY
就是一個閉包.
def funX(x):
def funY(y):
return x * y
return funY
上面函數 funX
的返回值為一個function對象,可以以funX(8)(5)
這種方式調用.
注意:與在函數里引用全局變量時需要加關鍵字global
一樣,在內部函數里要引用外部函數的變量我們則使用nolocal
關鍵字.
def funX():
x = 25
def funY():
nolocal x
x += 1
return x
return funY()