有人可以解释python中全局变量的以下行为吗?

时间:2018-08-03 10:26:47

标签: python

test.py

x = 10;   # global variable

def func1():
  print(x);  # prints 10

def func2()
  x = x + 1;  # IDE shows error: "Unresolved reference of x(RHS of expression)

def func3()
  global x;
  x = x + 1;  # This works

当x具有全局范围时,为什么func2()不允许我修改其值,尽管在func1()中可以访问它。以及为什么在func3()的情况下需要明确提及“ global”关键字?

1 个答案:

答案 0 :(得分:1)

您可以访问全局变量,但要对其进行修改,应明确声明该变量是全局变量。

我认为这个link会有用。

其背后的原因是,当您说x = x + 1时,python认为您想要一个局部变量x,然后当到达x + 1表达式时,python会发现该局部变量x被提及但未分配任何变量值,所以会感到困惑。