__import__(name, globals=None, locals=None, fromlist=(), level=0)
name
- строка str
, имя модуляglobals=None
- значения глобальных переменныхlocals=None
- значения локальных переменныхfromlist=()
- список вызываемых объектовlevel=0
- int
, количество родительских каталогов для поискаЗаметка
Это продвинутая функция, которая не нужна в повседневном программировании на Python, в отличие от importlib.import_module()
.
Функция __import__()
вызывается инструкцией import
. Прямое использование __import__()
также не рекомендуется в пользу importlib.import_module()
Функция __import__()
импортирует имя модуля name
, используя данные значений переменных глобальной globals
и локальной locals
областей видимости, чтобы определить, как интерпретировать имя name
в контексте пакета. Список from
оператора import
дает имена объектов или подмодулей, которые должны быть импортированы из модуля, указанного по имени name
. Стандартная реализация вообще не использует свой аргумент locals
, а использует глобальные переменные только для определения контекста пакета, указанного в инструкции import
.
Уровень level
указывает, использовать ли абсолютный или относительный импорт. 0 - по умолчанию, означает только выполнить абсолютный импорт. Положительные значения для уровня указывают количество родительских каталогов для поиска, относительно каталога вызывающего модуля __import__()
.
Когда переменная name
имеет форму package.module
, обычно возвращается пакет верхнего уровня (имя до первой точки), а не модуль, названный по имени name
. Однако когда задан непустой аргумент fromlist
, возвращается модуль с именем name
.
Например, оператор import spam
приводит к инструкциям, похожим на следующий код:
spam = __import__('spam', globals(), locals(), [], 0)
Инструкция import spam.ham
приводит к выполнению этого кода. Обратите внимание, как __import__()
возвращает здесь модуль верхнего уровня, поскольку это объект, связанный с именем инструкцией import
.
spam = __import__('spam.ham', globals(), locals(), [], 0)
Конструкция импорта вида from spam.ham import eggs, sausage as saus
приводит к выполнению следующего кода:
_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Здесь из модуля 'spam.ham'
извлекаются имена 'eggs'
, 'sausage'
для импорта и присваиваются им соответствующие имена 'eggs'
, 'saus
`.
Если вы просто хотите импортировать модуль по имени, используйте importlib.import_module()
.