在Python中更改全局变量

时间:2013-04-23 02:29:53

标签: python global-variables

我想从Python 2.7中的函数修改全局变量

x = 0
def func():
    global x
    x = 2

如果我在解释器中加载此代码,然后运行func(),则x保持为0.如何在函数内修改x的值?

编辑:这是解释器和源代码的屏幕截图。我不确定为什么它适用于其他人而不适合我。 http://img18.imageshack.us/img18/9567/screenshotfrom201304222.png

1 个答案:

答案 0 :(得分:1)

这是一个非常有趣的情况。当我使用from mytest import *的解释器运行您的代码时遇到了同样的问题:

>>> from mytest import *
>>> x
0
>>> func()
>>> x
0

但是,当我刚刚执行import mytest并从那里运行时:

>>> import mytest
>>> mytest.x
0
>>> mytest.func()
>>> mytest.x
2

结果很好!我认为,原因来自http://docs.python.org/2/reference/simple_stmts.html#the-global-statement

中的一行
  

全局声明中列出的名称不得定义为正式名称   参数或for循环控制目标,类定义,函数   定义或导入声明。

看起来因为它是导入语句中的参数(通过全部导入),global遇到了问题。您需要import *,还是只需导入整个模块?