首页 > 解决方案 > 为什么“全局”在“如果”中不起作用?

问题描述

为什么在一个函数中尝试global在一个 in if 中使用它时,即使if不满足条件,它仍然有效?

例子:

>>> x=4
>>>
>>> def show():
...     a=10
...     if a==15:
...        global x
...     x=22
...
>>> x
4
>>>
>>> show()
>>> x
22
>>>

有没有办法调节全局?

标签: python-3.x

解决方案


这是因为global关键字影响整个函数。它更像是一个解析器指令,而不是一些告诉 Python 解析器将标识符解释为全局的可执行代码。if也就是说,放在一个or块里面没关系for,只要解析器看到它,就会从它所在的行开始在整个函数中生效。

Python 文档说

全局语句是适用于整个当前代码块的声明。

有没有办法调节全局?

有了上面的内容,我想没有直接的方法可以实现这一目标。如果您不希望它是全局变量,我建议您为变量使用不同的名称,并在需要时分配给全局变量。


推荐阅读