Python全局关键字行为

时间:2013-11-15 19:22:11

标签: python global

我试图通过导入变量并在函数内本地修改变量来跨模块使用全局变量。代码和输出如下。最后一个输出不是我预期的,我认为它应该是15,因为它已经被func3在全局范围内修改过了。任何人都可以解释为什么最后的输出仍然是10。

谢谢!

test2.py

myGlobal = 5
def func3():
    global myGlobal
    myGlobal = 15
    print "from 3: ", myGlobal

test1.py

from test2 import myGlobal, func3

def func1():
    global myGlobal
    myGlobal = 10

def func2():
    print "from 2: ", myGlobal

print "init: ", myGlobal
func1()
func2()
func3()
func2()

输出:

init:  5
from 2:  10
from 3:  15
from 2:  10

1 个答案:

答案 0 :(得分:0)

如评论中所述,Python中的global表示模块级别。

这样做:

a = 1

a具有完全相同的效果:

def f():
    global a
    a = 1
f()

在这两种情况下,变量不会在模块之间共享。

如果要跨模块共享变量,请选中this