UnboundLocalError:如果语句顺序更改,则函数无法运行

时间:2018-10-21 02:08:43

标签: python python-2.7 scope local-variables

我定义了一个全局变量

x=100

此代码可以正常运行

def fn():
    x=1
    z=x+1
    print z             #2

但这不能正常工作

def f2():
    z=x+1
    print z
    x=1

Traceback (most recent call last):
  File "<pyshell#83>", line 1, in <module>
    fn()
  File "<pyshell#82>", line 2, in fn
    z=x+1
UnboundLocalError: local variable 'x' referenced before assignment

我不确定为什么会这样。

编译器是否尝试在情况2中将x解释为局部的,但x尚未初始化?

1 个答案:

答案 0 :(得分:0)

您可以使用global关键字引入并修改x的全局值。

喜欢

x = 100

def fn():
    x = 1
    z = x + 1
    print z


def f2():
    global x
    z = x + 1
    print z # -> 101
    x = 1

f2()

这也可能有帮助-https://www.programiz.com/python-programming/global-keyword