0

I know it is possible to conditionally import modules. My question is; if the condition to import a module is false, will the module still be loaded (and just sit idle in the background), or not.

I ask this from a resource point of view. Using a Raspberry Pi for programming does have its limits for example. This is just a hypothetical question... I haven't run into any problems yet.

4

1 に答える 1

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キャッシュ (メモリ内)に読み込まれないことを意味します。

>>> if False:
...     import thismoduledoesnotexist
...
>>> import thismoduledoesnotexist
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named thismoduledoesnotexist

これは主に、スクリプトを実行する前に Python が行うことは、スクリプトをbytecodeにコンパイルすることだけであり、ステートメントが発生する前にステートメントを評価しないことが主な原因です。

于 2013-08-29T09:22:24.293 に答える