0
我知道可以有條件地導入模塊。我的問題是;如果導入模塊的條件爲false,模塊是否仍然會被加載(並且只是在後臺閒置),或者不是。Python條件導入和資源
我從資源的角度提出這個問題。例如,使用Raspberry Pi進行編程有其侷限性。這只是一個假設性的問題......我還沒有遇到任何問題。
我知道可以有條件地導入模塊。我的問題是;如果導入模塊的條件爲false,模塊是否仍然會被加載(並且只是在後臺閒置),或者不是。Python條件導入和資源
我從資源的角度提出這個問題。例如,使用Raspberry Pi進行編程有其侷限性。這只是一個假設性的問題......我還沒有遇到任何問題。
不,它不會被導入,也不會被加載。
此代碼驗證模塊未添加到命名空間:
>>> 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之前的語句。
如果模塊已加載,您還可以檢查sys.modules。 –
@GabrielSamfira你在評論我編輯我的答案時:) – edsioufi