首先,上一段代碼:
1 def out(): 2 a=1 3 def inner(): 4 a+=1 5 print(a) 6 return inner 7 func = out() 8 func()
初略看上去沒有什么問題,運行之后報錯:UnboundLocalError: local variable 'a' referenced before assignment 翻譯成中文:UnboundLocalError:在賦值之前引用的本地變量'a'。
那么問題來,這是個閉包函數,為啥不能引用本地的變量'a'呢?
a+=1 => a=a+1
也就是說,在給a賦值的時候,a已經被應用了,再引用a加1時,是重復引用,所以報錯。
再上一段代碼:
def out(): a=1 def inner(): b=a+1 print(b) return inner func = out() func()
如果你有幸看到這篇博客,請點個贊!
