当您导入一个模块,然后再次重新导入它时,它会被重新导入/覆盖还是跳过?
当您导入模块“a”和“b”,并且还在模块“a”中导入模块“b”时,会发生什么?这样做安全吗?例如,如果该模块“b”中有一个实例化的类,您最终会实例化它两次吗?
import
加载匹配的.py
, .pyc
or .pyo
文件,创建一个模块对象,并将其及其完全限定(“点分”)名称存储在sys.modules
字典。如果一秒钟import
在此字典中找到要导入的模块,它将返回它,而无需再次加载文件。
回答您的问题:
当您导入一个模块,然后再次重新导入它时,它会被重新导入/覆盖还是跳过?
它将被跳过。要明确地重新导入模块,请使用reload()
内置功能。
当您导入模块“a”和“b”,并且还在模块“a”中导入模块“b”时,会发生什么?
import a
将加载a
from a.py[c]
, import b
将返回模块sys.modules['b']
已经加载了a
.
这样做安全吗?
是的,一点没错。
例如,如果该模块“b”中有一个实例化的类,您最终会实例化它两次吗?
Nope.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)