# python 中的閉包 n = 10 #定義全局作用域變量 def fn(): #形成閉包 n = 100 #定義局部變量n def inner(): nonlocal n n += 1 #這里定義操作相同變量n無法調用上層作用中的變量,如果只讀不寫則可以正常訪問 # python3 中新增nonlocal 關鍵字可以調用上層作用域中的變量 print(n) inner() return inner #返回內嵌函數的地址,從而形成閉包 #形成閉包的條件 #1、必須要有一個內嵌函數 #2、內嵌函數中要對自由變量的引用 #3、外部函數必須返回內嵌函數 t = fn() t() t() print(n)