代码正常运行:
def my_fun():
a = b
a = 5
print a
b = 2
my_fun()
print b
得到:
5
2
但是如果我这样做了:
def my_fun():
a = b
a = 5
b = 1
print a
b = 2
my_fun()
print b
我得到错误:UnboundLocalError: local variable 'b' referenced before assignment
这里发生了什么?虽然b
对函数可见,但我不能在函数内更改它?
当您分配b = 1
时,解释器开始将b
视为局部变量。如果你想分配全局变量b
,你必须把语句global b
放在函数的开头。
def my_fun():
global b
# do stuff
b = 2
my_fun()
print b