我关注用例:
a.py:
import b
import c
c.fun()
b.py:
def fun():
print 'b'
c.py:
def fun():
b.fun()
python a.py
不起作用。它失败了NameError: global name 'b' is not defined
。
我对python中导入的理解是在sys.modules
中添加了一个名称。如果是这种情况,那么c.py
也应该看到模块b
。但显然事实并非如此。所以任何人都可以解释导入模块时到底发生了什么。
感谢。
答案 0 :(得分:4)
模块c.py必须导入b才能使其工作...... 导入模块时,它会被添加到仅在当前脚本范围内可用的globals-dictionary中(使用“globals()”来打印其内容)
答案 1 :(得分:2)
答案 2 :(得分:1)
您已将b和c添加到a模块,但不是c模块。当您在模块内时,您只能看到添加到模块中的内容。 b和c被添加到sys.modules中,但是你没有导入sys,并且你没有使用sys.modules ['b']。