繁体   English   中英

在python中导入模块时会发生什么

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM