Библиотеки инструментов, воспринимаемые клиентами как файлы модулей Python

biblioteki instrumentov vosprinimaemye klientami kak fajly modulej python Интеграция Python/C

Типы C

Множественные экземпляры объектов, ведущих себя, как встроенные типы и классы.

Обычно модули расширений на C используются для реализации простых библиотек функций и в программном коде Python они появляются в виде импортируемых модулей (отсюда и их название). Типы C используются для программирования объектов, генерирующих множественные экземпляры, каждый из которых имеет собственную информацию о состоянии и способен поддерживать операторы выражений подобно многим классам Python. Типы C обладают теми же возможностями, что и встроенные типы и классы Python. Они обладают методами, поддерживают операции сложения, индексирования, извлечения срезов и так далее.

Чтобы обеспечить возможность взаимодействия, как модули, так и типы C должны предоставить программный код «связующего слоя», который будет выполнять трансляцию вызовов и передавать данные между двумя языками. Этот слой регистрирует свои операции в интерпретаторе Python в виде указателей на функции C. Связующий слой C отвечает за преобразование аргументов, передаваемых из Python в C, и преобразование результатов, передаваемых из C в Python. Сценарии Python просто экспортируют расширения C и пользуются ими, как если бы они в действительности были написаны на Python. Поскольку все действия по трансляции осуществляет программный код C, взаимодействие со стороны сценариев Python выглядит простым и прозрачным.

Модули и типы на C ответственны также за передачу сообщений об ошибках обратно в Python, при обнаружении ошибок, сгенерированных вызовами Python API, и за управление счетчиками ссылок сборщика мусора для объектов, сохраняемых слоем C неограниченно долго — объекты Python, хранимые в программном коде C, не будут утилизированы, пока вы обеспечите возможность уменьшения счетчиков ссылок до нуля. Модули и типы C могут компоноваться с Python статически (на этапе сборки) или динамически (при первом импортировании). При соблюдении всех этих условий расширения на C способны стать еще одним инструментом, доступным для использования в сценариях Python.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий