кажется вам наиболее прозрачным. Имя функции, перед которым стоит имя моду-
Модули и оператор import
145
ля (random.choice), использовать безопаснее, однако из-за этого придется набирать
немного больше текста.
Эти примеры применения функции get_description() продемонстрировали
варианты того, что можно импортировать, но не показали, где следует выполнять
импортирование, — в них import вызывался изнутри функции. Мы могли бы им-
портировать random из другой функции:
>>> import random
>>> def get_description():
... possibilities = ['rain', 'snow', 'sleet', 'fog', 'sun', 'who knows']
... return random.choice(possibilities)
...
>>> get_description()
'who knows'
>>> get_description()
'rain'
Вам следует рассмотреть возможность импортировать код вне функции, если
импортируемый код может быть использован более одного раза, и изнутри функции,
если вы знаете, что использование кода будет ограничено. Некоторые люди пред-
почитают размещать все операторы import в верхней части файла, чтобы явно обо-
значить все зависимости их кода. Оба варианта работают.
Импортируем модуль
с другим именем
В нашей основной программе weatherman.py мы делали вызов import report. Но что,
если у вас есть другой модуль с таким же именем или вы хотите использовать более
короткое или простое имя? В такой ситуации можете выполнить импорт с по-
мощью псевдонима. Используем псевдоним wr:
import report as wr
description = wr.get_description()
print("Today's weather:", description)
Импортируем только
самое необходимое
С помощью Python вы можете импортировать одну или несколько частей модуля.
Каждая часть может сохранить свое оригинальное имя, или же вы можете дать ей
alias. Для начала импортируем функцию get_description() из модуля report с по-
мощью его оригинального имени:
from report import get_description
description = get_description()
print("Today's weather:", description)
146
Глава 5. Py Boxes: модули, пакеты и программы
Теперь импортируем ее как do_it:
from report import get_description as do_it
description = do_it()
print("Today's weather:", description)
Каталоги поиска модулей
Где Python ищет файлы для импорта? Он использует список имен каталогов