2013-08-29 27 views
0

我知道可以有條件地導入模塊。我的問題是;如果導入模塊的條件爲false,模塊是否仍然會被加載(並且只是在後臺閒置),或者不是。Python條件導入和資源

我從資源的角度提出這個問題。例如,使用Raspberry Pi進行編程有其侷限性。這只是一個假設性的問題......我還沒有遇到任何問題。

回答

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做是把它編譯成字節碼,因此不評估他們的occurence之前的語句。

+0

如果模塊已加載,您還可以檢查sys.modules。 –

+0

@GabrielSamfira你在評論我編輯我的答案時:) – edsioufi