写入模块
可以说我有这3个(小)python文件 -
a.py
myvar = 'a'
b.py
import a
import c
myvar = 'b'
c.pr()
c.py
from a import myvar
def pr():
print myvar
现在,如果我执行b.py
我会得到输出
a
但我真的想要输出为
b
所以请告诉我如何重构/修改程序,以便为模块范围的myvar
分配不同的值。
在b.py中 ,您正在设置b.py的myvar。 你想访问myvar的值。 所以b.py可能看起来像:
import a
import c
a.myvar = 'b' # belongs to a
myvar = 'something different' # belongs to b
c.pr()
你需要更新c.py,以便它使用a.py的myvar,而不是它自己的本地副本。 所以c.py :
import a
def pr():
print a.myvar
为什么?
在您的原始c.py中 ,当您from a import myvar
调用时,这相当于:
import a
myvar = a.myvar
这会在导入时在c.py中创建一个myvar
的本地版本。 如果这是令人困惑的,我找到了这篇关于python变量如何工作非常丰富的文章。
我会做第四个模块d.py
此模块由'a','b'和'c'导入。
正如在文档中:
在单个程序中跨模块共享信息的规范方式是创建一个特殊模块(通常称为config或cfg)。 只需在应用程序的所有模块中导入配置模块; 该模块将成为全球名称。 由于每个模块只有一个实例,因此对模块对象所做的任何更改都会反映到处
请小心; 一旦你创建了这个配置模块,因为它是必要的,那么很容易就会被带走,并开始向其中添加其他变量,只是因为它在那里。 大多数时候有更好的方法...
链接地址: http://www.djcxy.com/p/54801.html上一篇: Writing to module
下一篇: how to access attributes initialized in class constructor of different py file?