global_mod.py
x = None
mid_access_mod.py
from global_mod import *
class delta:
def __init__(self):
print x
bot_modif_mod.py
import mid_access_mod
import global_mod
class mew:
def __init__(self):
global_mod.x = 5
def main():
m = mew()
d = mid_access_mod.delta()
尽管所有模块都共享全局变量x,但这将打印出None。为什么会这样呢?似乎在mid_access_mod.py中,在bot_modif_mod.py中的mew()函数分配之前就已经计算了x。
from modulename import *
而不是import modulename
。如果你将 emish 的代码中的 global_mod.py 更改为x = ['starting list']
,然后更改 bot_modif_mod.py 中的重新分配为global_mod.x = ['new list']
,你会发现这将打印 "['starting list']"。正如 Alex Martinelli 所说,真正的问题是from modulename import *
快照。我希望其他用户不会像我一样感到困惑。 - user1379351x=['starting list']
,那么应该通过x[0]='new value'
来编辑值,而不是将值分配为全新的列表(x=['new list']
)。 - KFox