"Python - модули, пакеты, классы, экземпляры" - читать интересную книгу автора (Бройтман Олег)

Олег Бройтман

Питон - модули, пакеты, классы, экземпляры.

Модули - структурирование пространства имен

При создании больших программ или библиотек большим количеством людей
встает проблема коллизий имен. Питон решает эту проблему так же, как и
большинство современных языков - структурированием пространства имен с
помощью иерархически организованных модулей.
В Питоне три пространства имен: встроенное пространство имен (им можно
управлять с помощью модуля доступа к интерпретатору sys), локальное
пространство функции, и глобальное пространство модуля.
(Объектно-ориентированное программирование создает дополнительные
пространства классов и экземпляров классов, об этом ниже). Каждое
пространство имен - это список отображений имени в значение.
Модуль - это совокупность описаний, объединенных в общее пространство
имен - глобальное пространство модуля. Модули подключаются к программе (или
другому модулю) с помощью оператора import, после которого имена из
пространства имен модуля становятся доступными. Какие именно имена
становятся доступны, определяет оператор import: вариант import module
делает доступным ровно одно имя - имя модуля module, но зато через это имя
можно использовать все глобальные имена модуля в виде module.name. В
варианте from module import name из модуля импортируется указанное имя или
список имен. В варианте from module import * из модуля импортируются все
имена. Хотя автор модуля может ограничить этот список, а в отсутствии такого
ограничения не импортируются имена, начинающиеся с подчеркивания -
считается, что это внутренние имена модуля, не входящие в его публичный
интерфейс.
Модуль может быть написан на Python, C или C++. Модули, написанные на
Питоне, позволяют создавать новые классы (об объектно-ориентированном
программировании речь будет идти ниже). Модули написанные на C и C++
позволяют создавать новые типы данных. Модули, написанные на C/C++ могут
быть встроенные (builtin) или подгружаемые (DLL в Windows, разделяемые
библиотеки в тех вариантах UNIX, в которых формат выполняемых файлов ELF).
Модуль на Питоне - это текстовый файл с расширением .py, содержащий
описания переменных, функций и классов, плюс выполняемый код, который
позволяет инициализировать модуль. Этот код выполняется при первом импорте
модуля, после чего интерпретатор запоминает, что модуль уже проимпортирован
и проинициализирован, и при последующих импортах этого же модуля код
инициализации не выполняется.
Модули можно объединять в древовидные иерархии. Например, пакет XML
содержит в себе пакеты DOM, SAX, Parsers (и другие, в зависимости от
реализации). В результате можно проимпортировать PyExpat командой import
xml.parsers.expat, тогда команды этого модуля будут доступны как
xml.parsers.expat.ParserCreate, а можно проимпортировать его же командой
from xml.parsers import expat, тогда команды этого модуля будут доступны как
expat.ParserCreate. Или сразу from xml.parsers.expat import ParserCreate!

Объектно-ориентированное программирование