在Python中更改全局变量
我想修改Python 2.7中函数的全局变量在Python中更改全局变量,python,global-variables,Python,Global Variables,我想修改Python 2.7中函数的全局变量 x = 0 def func(): global x x = 2 如果我在解释器中加载这段代码,然后运行func(),x将保持为0。如何从函数中修改x的值 编辑:这是解释器和源代码的截图。我不知道为什么它对别人有效而对我无效。 这是一个非常有趣的情况。当我使用mytest import*中的从解释器运行代码时,我遇到了相同的问题: >>> from mytest import * >>> x 0
x = 0
def func():
global x
x = 2
如果我在解释器中加载这段代码,然后运行func(),x将保持为0。如何从函数中修改x的值
编辑:这是解释器和源代码的截图。我不知道为什么它对别人有效而对我无效。
这是一个非常有趣的情况。当我使用mytest import*中的
从解释器运行代码时,我遇到了相同的问题:
>>> from mytest import *
>>> x
0
>>> func()
>>> x
0
但是,当我刚刚导入mytest并从那里运行它时:
>>> import mytest
>>> mytest.x
0
>>> mytest.func()
>>> mytest.x
2
结果很好!我相信,原因来自于一句话:
全局语句中列出的名称不得定义为正式名称
for循环控制目标、类定义、函数中的参数或
定义或导入语句
看起来是因为它是导入语句中的一个参数(通过导入全部),global
遇到了问题。您需要导入*
,还是只需导入整个模块?这是一个非常有趣的情况。当我使用mytest import*中的从解释器运行代码时,我遇到了相同的问题:
>>> from mytest import *
>>> x
0
>>> func()
>>> x
0
但是,当我刚刚导入mytest并从那里运行它时:
>>> import mytest
>>> mytest.x
0
>>> mytest.func()
>>> mytest.x
2
结果很好!我相信,原因来自于一句话:
全局语句中列出的名称不得定义为正式名称
for循环控制目标、类定义、函数中的参数或
定义或导入语句
看起来是因为它是导入语句中的一个参数(通过导入全部),global
遇到了问题。您需要导入*
,还是只需导入整个模块?这对我来说是有效的。你确定你调用了这个函数吗?我粘贴代码,调用func()
,然后print x
。我明白了。你在说什么?它仍然有效。您可以尝试在func()
中打印所有globals()
,以查看是否包含x
。这对我来说是有效的。你确定你调用了这个函数吗?我粘贴代码,调用func()
,然后print x
。我明白了。你在说什么?它仍然有效。您可以尝试在func()
中打印所有globals()
,以查看是否包含x
。