2013-08-29 3 views
0

Я знаю, что можно условно импортировать модули. Мой вопрос: если условие для импорта модуля является ложным, модуль будет загружен (и просто сидеть в режиме ожидания в фоновом режиме), или нет.Python условный импорт и ресурсы

Я спрашиваю об этом с точки зрения ресурса. Например, использование малины 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 перед запуском сценария является скомпилировать его байткод, и как таковой не оценивает заявления до их встречаемости.

+0

вы также можете проверить sys.modules, если модуль был загружен. –

+0

@GabrielSamfira вы прокомментировали, когда я редактировал свой ответ :) – edsioufi

Смежные вопросы