[英]What happens when a module is imported in python
我正在关注用例:
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中import的理解是在sys.modules
添加了一个名称。 如果是这种情况,则c.py
也应参阅模块b
。 但是显然不是这样。 因此任何人都可以解释导入模块时到底发生了什么。
谢谢。
模块c.py必须导入b才能正常工作...导入模块时,它将添加到仅在当前脚本作用域中可用的globals-dictionary中(使用“ globals()”打印其内容)
您已将b和c添加到a模块,但未添加到c模块。 在模块内部时,您只能看到已添加到模块中的内容。 b和c被添加到sys.modules中,但是您尚未导入sys,并且您没有使用sys.modules ['b']。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.