我读了另外两个关于它的问题。 this
但我不明白这种行为:
#mod1 __init__.py
g = 5
#mod2 __init__.py
from mod1 import g
def bar():
print g
#main1.py
import mod1
mod1.g = 10
from mod2 import bar
bar() # prints 10
#main2.py
from mod1 import g
g = 10
from mod2 import bar
bar()
所以问题是为什么main1打印10,main2打印5?进口和进口的真正区别是什么?你知道吗
关键是在
main1()
中,您将模块mod1
中的变量g
设置为10,因此调用bar()
返回10。我想这很清楚。 在main2()
中,您首先将g
设置为10,但是当mod2
导入mod1
时,它会得到一个带有初始变量集的新范围。尝试在main2()
调用mod2
后打印g
,我猜它会打印更改的值(10)。你知道吗您必须记住,
import
只是告诉解释器查找相应模块中调用的内容(就好像您要再次打开脚本一样)。当然,当程序更改变量时,分配给变量的值在脚本中不会更改。解释器只读取一次.py文件(在您的情况下是再次读取),也就是在导入它时。你知道吗这与范围有关
mod2导入mod1(g=5)
main1将mod1.g设置为10,并要求mod2打印mod1.g的值
main2将main2.g设置为10,但mod1.g不变
相关问题 更多 >
编程相关推荐