@zsh-o
2018-07-06T02:51:15.000000Z
字数 387
阅读 1127
编程
遇到了一个特别奇怪的问题
def f1():x = 10def f2():if x == 0:return;else:x = x - 1f2()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 xx = 10def f2():global xif x == 0:return;else:x = x - 1f2()f2()print(x)f1()
输出为0
