代碼如下:
myVar = 1
def myfunc():
myVar += 1
myfunc()
會提示錯誤:
UnboundlocalError: local variable 'myVar' referenced before assignment
Python提出如下假設:如果在函數體內的任何地方對變量賦值,則Python將名稱添加到局部命名空間中。
語句myVar += 1對名稱myVar賦值,則myVar是函數myfunc的局部命名空間的一部分,而它當前沒有關聯值,所以會產生錯誤。
解決方法:使用global語句
代碼如下:
myVar = 1
def myfunc():
global myVar
myVar += 1
myfunc()
附作用域搜索規則:
L:本地的(Local)
E:封閉的(Eclosing)
G:全局的(Global)
B:內置的(Built-in)
新聞熱點
疑難解答