13 июня 2013 г.

Импортирование и атрибуты

Теперь предположим, что модуль a.py использует функцию spam модуля b.py. Для этого он
мог бы содержать следующие инструкции:
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 из файлов другой программы.

Комментариев нет:

Отправить комментарий