【发布时间】:2014-02-18 03:20:27
【问题描述】:
在 bar.py 中:
var = 1
def set_var():
global var
var = 2
在 foo.py 中:
from bar import *
print(var)
set_var()
print(var)
在 foo2.py 中:
import bar
print(bar.var)
bar.set_var()
print(bar.var)
如果我运行 foo.py 输出是:
1
1
但是如果我运行 foo2.py 输出是:
1
2
这是我所期望的。
我只想了解这种行为,因为我是 Python 新手,还没有找到很好的理由。
PD:附加信息。我想开发一个使用单例对象的模块,并且我有一些使用该对象的遗留代码。我不希望在遗留代码中为对该对象的每个引用添加前缀,这就是为什么我认为使用 from library import object 语法导入模块会有所帮助。
所以在库中,我有访问全局对象的函数来配置它,就像在示例 (bar.py) 中一样。在遗留代码中,我希望只需要像在 foo.py 中那样进行某种导入。
感谢您的指导。
已编辑:第二个示例
在 bar.py 中
var_list = list(range(0, 2))
var_list2 = list(range(0, 2))
def set_var():
global var_list
var_list = list(range(0, 3))
var_list2.append(2)
在 foo.py 中
from bar import *
print(var_list)
print(var_list2)
set_var()
print(var_list)
print(var_list2)
输出是:
[0, 1]
[0, 1]
[0, 1]
[0, 1, 2]
我知道在 set_var 中我们正在使用 list() 创建一个新对象,但我希望在 foo.py 中访问这个新对象时我提到它与 var_list 一起使用(就像使用语法 bar.var_list 一样)。我需要更多背景知识。
谢谢
【问题讨论】:
标签: python python-2.7 python-import