此代码按预期工作:
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
,但我无法在函数内部更改它?
答案 0 :(得分:1)
当您指定b = 1
时,解释器会开始将b
视为局部变量。如果要分配全局变量b
,则必须将语句global b
放在函数的开头。
def my_fun():
global b
# do stuff
b = 2
my_fun()
print b