@zsh-o
2018-07-06T10:51:15.000000Z
字数 387
阅读 927
编程
遇到了一个特别奇怪的问题
def f1():
x = 10
def f2():
if x == 0:
return;
else:
x = x - 1
f2()
f2()
print(x)
f1()
上述代码会报错,说x
未定义
UnboundLocalError: local variable 'x' referenced before assignment
这个是由于python
的局部作用域中的变量会从里向外进行搜索,在f2()
函数里面对x进行了赋值x
被认为是f2
的局部变量而不是f1
中的x = 10
,所以报错,所以局部变量作用域的归属是看什么时候赋值(名字相同)来确定的
可以用global
把x提升为全局变量,使f1
、f2
中x
的作用域相同
def f1():
global x
x = 10
def f2():
global x
if x == 0:
return;
else:
x = x - 1
f2()
f2()
print(x)
f1()
输出为0