如果两个模块相互导入会怎样?
为了概括这个问题,Python中的循环导入怎么办?
去年在comp.lang.python上对此进行了非常好的讨论。它相当彻底地回答了您的问题。
导入确实非常简单。只要记住以下几点:
'import'和'from xxx import yyy'是可执行语句。它们在运行的程序到达该行时执行。
如果模块不在sys.modules中,则导入将在sys.modules中创建新的模块条目,然后在模块中执行代码。在执行完成之前,它不会将控制权返回给调用模块。
如果sys.modules中确实存在某个模块,则无论导入是否完成执行,导入都会简单地返回该模块。这就是循环导入可能返回部分为空的模块的原因。
最后,执行脚本在名为__main__的模块中运行,以其自己的名称导入脚本将创建一个与__main__不相关的新模块。
综合考虑这一点,在导入模块时应该不会感到惊讶。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句