Python条件导入&资源

时间:2013-08-29 09:17:57

标签: python import resources conditional

我知道可以有条件地导入模块。我的问题是;如果导入模块的条件为false,模块是否仍会被加载(并且只是在后台闲置),或者不是。

我从资源的角度问这个问题。使用Raspberry Pi进行编程确实有其局限性。这只是一个假设的问题......我还没有遇到任何问题。

1 个答案:

答案 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在运行脚本之前所做的一切都是将其编译为字节码,因此在它们出现之前不会对语句进行评估。