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

Posted

技术标签:

【中文标题】有人可以解释python中全局变量的以下行为吗? [复制]【英文标题】:Could some explain the following behavior of global variable in python? [duplicate] 【发布时间】:2019-01-11 05:29:55 【问题描述】:

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() 一样明确提及“全局”关键字?

【问题讨论】:

也可以查看matthew-brett.github.io/teaching/global_scope.html 【参考方案1】:

您可以访问全局变量,但要修改它们,应明确声明该变量是全局变量。

我认为这个link 会很有用。

背后的原因是当你说 x = x + 1 时,python 认为你想要一个局部变量 x,然后当到达 x + 1 表达式时,python 发现局部变量 x 被提及但没有分配任何值,所以它会混淆。

【讨论】:

s/ 用于修改/用于重新绑定/

以上是关于有人可以解释python中全局变量的以下行为吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我是 python 新手,我偶然发现了一个函数/变量?我不知道它是做啥的,有人可以解释一下吗? [复制]

以下等式在 python x=4**3**5**7 中如何工作。有人可以解释一下它的执行顺序吗? [复制]

在 PHP 中,有人可以解释克隆与指针引用吗?

有人可以很好地解释非阻塞套接字的“发送”行为吗?

了解 Python 中的嵌套 lambda 函数行为

有人可以解释为啥以下代码中的总 = 7 吗?与静态整数总和? [关闭]