我有以下代码(使用CPython 3.4运行):
基本上红色箭头解释了我期望导入工作的方式: h是在从test2导入之前定义的。 所以当test2导入test1时,它不再是一个空模块(用h) 并且h是test2想要的唯一东西。
我认为这与http://effbot.org/zone/import-confusion.htm
相矛盾任何提示?
答案 0 :(得分:1)
您遗漏的是from X import Y
,不仅仅是导入Y
。它首先导入模块X 。它在页面中提到:
来自X import a,b,c 的导入模块X,并在当前命名空间中为给定对象创建引用。或者换句话说,您现在可以在程序中使用a和b和c。
所以,这句话:
from test import h
当达到h
的定义时,不会停止导入。
让我们改变文件:
test.py
h = 3
if __name__ != '__main__': #check if it's imported
print('I'm still called!')
...
当您运行test.py
时,您会在错误发生前获得I'm still called!
。
条件检查脚本是否已导入。在您编辑的代码中,如果添加条件,只有在它充当主脚本而不是导入的脚本时才会print
。
这可以提供帮助:
test2.j
- 它现在还不存在。希望这有帮助!