最近開始學習python,一直以爲python定義變量前沒有命令很難受,果真今天在練習閉包時遇到了這個問題。先看看出問題的代碼python
def createCounter(): n = 0 def counter(): n = n + 1 return n return counter
這裏會報錯:UnboundLocalError: local variable 'n' referenced before assignment
閉包
n = n + 1
這行代碼致使的歧義新定義的變量n
,而且n = n + 1
,因爲以前n未被定義,因此會報錯def createCounter(): n = 0 def counter(): nonlocal n n = n+1 return n return counter
這樣子就不會報錯了學習