我知道可以有条件地导入模块。我的问题是;如果导入模块的条件为false,模块是否仍会被加载(并且只是在后台闲置),或者不是。
我从资源的角度问这个问题。使用Raspberry Pi进行编程确实有其局限性。这只是一个假设的问题......我还没有遇到任何问题。
答案 0 :(得分:2)
不,它没有导入,也没有加载。
此代码验证模块未添加到命名空间:
>>> if False:
... import time
... else:
... time.clock()
...
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
NameError: name 'time' is not defined
此代码证明import
语句永远不会运行,否则会产生ImportError
。这意味着模块永远不会加载到先前导入的所有模块的sys.modules
cache (in the memory)中。
>>> if False:
... import thismoduledoesnotexist
...
>>> import thismoduledoesnotexist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named thismoduledoesnotexist
这主要是因为Python在运行脚本之前所做的一切都是将其编译为字节码,因此在它们出现之前不会对语句进行评估。