Теперь предположим, что модуль a.py использует функцию spam модуля b.py. Для этого он
мог бы содержать следующие инструкции:
import b
b.spam(‘gumby’)
мог бы содержать следующие инструкции:
import b
b.spam(‘gumby’)
В первой строке здесь располагается инструкция import, дающая файлу a.py доступ ко всему, что определено на верхнем уровне в файле b.py. В общих чертах это означает следующее: «загрузить файл b.py (если он еще не загружен) и предоставить доступ ко всем его атрибутам через имя модуля b». Инструкции import (и, как вы узнаете далее, from) загружают и запускают другие файлы на этапе времени выполнения.
В языке Python невозможно обращаться к именам в других мод улях, пока такие инструкции импорта не будут выполнены на этапе времени выполнения. Основная задача этих инструкций состоит в том, чтобы связать имена в модуле – простые переменные – с объектами загруженных модулей. Фактически имя модуля, используемое в инструкции import, во-первых, идентифицирует внешний файл и, во-вторых, становится именем переменной, которая будет представлять загруженный модуль. Объекты, определяемые модулем, также
создаются во время выполнения, когда производится импорт модуля: инструкция import, в действительности, последовательно выполняет инструкции в указанном файле, чтобы воссоздать его содержимое.
Вторая инструкция в файле a.py вызывает функцию spam, определенную в модуле b, используя форму записи атрибутов объекта. Запись b.spam означает следующее: «извлечь значение имени spam, расположенного в объекте b». В нашем примере – это вызываемая функция, поэтому далее ей передается строка в круглых скобках (‘gumby’). Если вы создадите эти файлы, сохраните их и запустите файл a.py, то будут выведены слова «gumby spam».
Вы увидите, что повсюду в сценариях на языке Python используется нотация
object.attribute – большинство объектов обладают атрибутами, доступ к кото-
рым можно получить с помощью оператора «.». Некоторые атрибуты – имена
вызываемых функций, а д ругие – простые значения, которые представляют
свойства объекта (например, имя персоны).
Импорт – широко используемое понятие в языке Python. Любой файл может
импортировать функциональные возможности из любого другого файла. На-
пример, файл a.py может импортировать файл b.py, чтобы иметь возможность
вызывать его функцию, при этом файл b.py может в свою очередь импортиро-
вать файл c.py, чтобы получить доступ к другим функциональным возмож-
ностям, определенным в нем. Цепочка импортирования может уходить так
глубоко, как это потребуется: в этом примере модуль a может импортировать
модуль b, который импортирует модуль c, который в свою очередь может еще
раз импортировать модуль b, и так далее.
Помимо самой крупной единицы в организационной структуре программы
модули (и пакеты модулей, которые описываются в главе 23) также играют
роль самой крупной единицы программного кода, доступного для повторно-
го использования. Оформив программные компоненты в виде файлов модулей,
вы сможете использовать их не только в оригинальной программе, но и в лю-
бых других программах, которые вам придется писать. Например, если после
написания программы, структура которой изображена на рис. 21.1, вдруг об-
наружится, что функция b.spam является универсальным инструментом, мы
сможем использовать в других программах. Все, что нам потребуется, – это
импортировать файл b.py из файлов другой программы.
Комментариев нет:
Отправить комментарий