最近写 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 ( 此 py 文件 ) 中的全局变量
a.py 增加一个函数

在Python编程中,使用`from module import *`可能导致全局变量在不同模块间的行为不一致。若全局变量为普通类型,如字符串,`global`关键字在其他模块无法改变其原始值;而如果全局变量是列表或字典等可变类型,其内容可以在不同模块中被修改。建议避免使用`from...import *`,而是采用`import module`并使用`module.gvar`来访问全局变量。
最低0.47元/天 解锁文章
849

被折叠的 条评论
为什么被折叠?



