我试图在一个模块中导入一个模块,然后从顶部访问较低级别的模块,但是它不可用。这是正常行为吗?
# caller.py
import first
print second.some_var
# first.py
import second
# second.py
some_var = 1
运行 caller.py
给出错误
NameError: name 'second' is not defined
我是否必须在 caller.py
中import second
?这对我来说似乎违反直觉。
最佳答案
你可以使用
import first
print first.second.some_var
让 second
自动出现在命名空间中只是通过导入 first
会导致很多冲突
这也行
from first import second
print second.some_var
通配符的使用
from first import *
不鼓励,因为如果有人向 first
添加额外的属性/函数,如果他们碰巧选择相同的名称,他们可能会覆盖您在本地使用的属性
关于导入中的python导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20012920/