Python的"导入"如何在内部工作?

3 python import module

导入模块时,再次重新导入,是重新导入/覆盖还是跳过?导入模块"a"和"b"时,还在模块"a"中导入了模块"b",会发生什么?这样做安全吗?例如,如果该模块"b"中有一个实例化的类,你最终会实例化它两次吗?

Fer*_*yer 5

import加载匹配.py,.pyc或者.pyo与它的完全合格的("点")的名义文件,创建一个模块对象,并将其存储sys.modules字典.如果第二个import找到要在此字典中导入的模块,它将返回它而不再次加载该文件.

回答你的问题:

导入模块时,再次重新导入,是重新导入/覆盖还是跳过?

它会被跳过.要明确重新导入模块,请使用reload()内置函数.

导入模块"a"和"b"时,还在模块"a"中导入了模块"b",会发生什么?

import a将负载aa.py[c],import b将返回模块sys.modules['b']已经被加载a.

这样做安全吗?

是的,一点没错.

例如,如果该模块"b"中有一个实例化的类,你最终会实例化它两次吗?

不.