Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 107

Как и для многих других аспектов программирования, выбирайте стиль, который

кажется вам наиболее прозрачным. Имя функции, перед которым стоит имя моду-

Модули и оператор 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 ищет файлы для импорта? Он использует список имен каталогов