最近写 python 程序, 发现一个比较 trick 的地方
a.py
PWD = None
def func1():
global PWD
PWD="pwd"
print "PWD in func1 is: " + PWD
b.py
from a import *
func1()
print "PWD after call func1() is: " + str(PWD)
执行 python b.py 结果如下
PWD in func1 is: pwd
PWD after call func1() is: None
刚开始我认为在函数中给全局变量的赋予的值, 并不能传递回去, 就是说
global PWD 只是把全局变量的传递给局部变量 PWD, 而后用户都在对局部变量 PWD进行操作, 但并不是这样
看下面例子, 只是改了 import 语句
------------------------- b.py ------------------------
import a
a.func1()
print "PWD after call func1() is: " + str(a.PWD)
输出变为
PWD in func1 is: pwd
PWD after call func1() is: pwd
因此我推测 global 只能改本 module (