猿问

有人可以解释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”关键字?


ITMISS
浏览 112回答 1
1回答

富国沪深

您可以访问全局变量,但要对其进行修改,应明确声明该变量是全局变量。我认为此链接会很有用。其背后的原因是,当您说x = x + 1时,python认为您想要一个局部变量x,然后当到达x + 1表达式时,python会发现该局部变量x被提及但未分配任何值,因此它感到困惑。
随时随地看视频慕课网APP

相关分类

Python
我要回答