Примечание: в примерах ниже предполагается, что у вас уже есть файл с содержимым и именем, описанным в начале раздела "Определение модуля и его импорт"
Вы также можете импортировать целый модуль под другим именем, используя конструкцию import <module> as <name>
. Оператор as
производит связывание имя модуля md
с именем переменной foo
.
Это фактически импорт модуля тем же способом, что и import md
, с той лишь разницей, что он теперь будет доступен как foo
:
>>> import md as foo >>> foo.a # [100, 200, 300] >>> foo.fib(500) # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Содержимое модуля можно импортировать из определения функции. В этом случае импорт не выполняется до тех пор, пока не будет вызвана функция:
>>> def foo(): ... import md as foo ... foo.fib(500) ... >>> foo() # 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Python 3 не допускает неразборчивого импорта из тела функции, в синтаксисе которого встречается символ '*'
:
>>> def foo(): ... from md import * ... # SyntaxError: import * only allowed at module level
И последнее, инструкция try
с предложением except ImportError
можно использовать для защиты от неудачных попыток импорта:
>>> try: ... # Несуществующий модуль ... import fib ... except ImportError: ... print('Module not found') ... # Module not found