如果两个模块相互导入会怎样?
为了概括这个问题,Python中的循环导入又如何呢?
导入确实非常简单。只要记住以下几点:
'import'和'from xxx import yyy'是可执行语句。它们在运行的程序到达该行时执行。
'import'
'from xxx import yyy'
如果模块不在sys.modules中,则导入将在sys.modules中创建新的模块条目,然后在模块中执行代码。在执行完成之前,它不会将控制权返回给调用模块。
sys.modules
如果sys.modules中确实存在一个模块,则无论导入是否完成执行,导入都会简单地返回该模块。这就是循环导入可能返回部分为空的模块的原因。
最后,执行脚本在名为__main__的模块中运行,以其自己的名称导入脚本将创建一个与__main__无关的新模块。
__main__
放在一起,导入模块时应该不会感到惊讶。