Ответ 1
__import__
- функция хука низкого уровня, используемая для импорта модулей; его можно использовать для динамического импорта модуля, указав имя модуля для импорта в качестве переменной, что не позволяет вам сделать оператор import
.
importlib.import_module()
- обертка вокруг этого крючка, чтобы создать хороший API для этой функции; это очень недавнее дополнение к Python 2 и было более сфокусировано на Python 3. Кодовые базы, которые используют __import__
, обычно делают это, потому что они хотят оставаться совместимыми со старыми версиями Python 2, например. ничего перед Python 2.7.
Одним из побочных эффектов использования __import__
может быть то, что он возвращает импортированный модуль и ничего не добавляет к пространству имен; вы можете импортировать с ним, не имея затем удалить новое имя, если вы не хотите, чтобы это новое имя; использование import somename
добавит somename
в ваше пространство имен, но __import__('somename')
вместо этого вернет импортированный модуль, который вы можете игнорировать. По этой причине Werkzeug использует крючок в одном месте.
Все остальные виды использования связаны с динамическим импортом. Werkzeug поддерживает Python 2.6, поэтому не может использовать importlib
.