UnboundLocalError: local variable 'a' referenced before assignment


首先,上一段代碼:

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()

如果你有幸看到這篇博客,請點個贊!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM