Spec-Zone.ru › Python 3.9

Расширение и встраивание интерпретатора Python

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

Этот документ предполагает базовые знания Python. Для неофициального введения в язык, см. Руководство по Python. Справочник по языку Python предоставляет более формальное определение языка. Стандартная библиотека Python документирует существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), которые обеспечивают широкие возможности языка.

Для подробного описания всего API Python/C, см. отдельный Справочник по API Python/C.

Рекомендуемые инструменты сторонних разработчиков

Это руководство охватывает только базовые инструменты для создания расширений, предоставляемые в рамках этой версии CPython. Инструменты сторонних разработчиков, такие как Cython, cffi, SWIG и Numba, предлагают более простые и сложные подходы к созданию C и C++ расширений для Python.

См. также

Руководство пользователя по пакетированию Python: двоичные расширения

Руководство пользователя по пакетированию Python не только охватывает несколько доступных инструментов, которые упрощают создание двоичных расширений, но также обсуждает различные причины, по которым создание модуля расширения может быть желательным.

Создание расширений без инструментов сторонних разработчиков

Этот раздел руководства охватывает создание C и C++ расширений без помощи инструментов сторонних разработчиков. Он предназначен в первую очередь для разработчиков этих инструментов, а не для рекомендуемого способа создания собственных C расширений.

  • 1. Расширение Python с помощью C или C++
    • 1.1. Простой пример
    • 1.2. Междометие: Ошибки и исключения
    • 1.3. Возвращение к примеру
    • 1.4. Таблица методов модуля и функция инициализации
    • 1.5. Компиляция и компоновка
    • 1.6. Вызов функций Python из C
    • 1.7. Извлечение параметров в функциях расширения
    • 1.8. Параметры ключевых слов для функций расширения
    • 1.9. Построение произвольных значений
    • 1.10. Счетчики ссылок
    • 1.11. Написание расширений на C++
    • 1.12. Предоставление C API для модуля расширения
  • 2. Определение типов расширений: Руководство
    • 2.1. Основы
    • 2.2. Добавление данных и методов к базовому примеру
    • 2.3. Предоставление более точного управления атрибутами данных
    • 2.4. Поддержка циклического сбора мусора
    • 2.5. Наследование от других типов
  • 3. Определение типов расширений: Разнообразные темы
    • 3.1. Заключительные действия и выделение памяти
    • 3.2. Представление объекта
    • 3.3. Управление атрибутами
    • 3.4. Сравнение объектов
    • 3.5. Поддержка абстрактных протоколов
    • 3.6. Поддержка слабых ссылок
    • 3.7. Дополнительные рекомендации
  • 4. Построение C и C++ расширений
    • 4.1. Построение C и C++ расширений с использованием distutils
    • 4.2. Распространение ваших модулей расширения
  • 5. Построение C и C++ расширений в Windows
    • 5.1. Подход поваренной книги
    • 5.2. Различия между Unix и Windows
    • 5.3. Использование DLL на практике

Встраивание среды выполнения CPython в более крупное приложение

Иногда вместо создания расширения, работающего внутри интерпретатора Python как основное приложение, желательно встроить среду выполнения CPython в более крупное приложение. Этот раздел описывает некоторые детали, необходимые для успешного выполнения этой задачи.

  • 1. Встраивание Python в другое приложение
    • 1.1. Встраивание на очень высоком уровне
    • 1.2. За пределами встраивания на очень высоком уровне: Обзор
    • 1.3. Чистое встраивание
    • 1.4. Расширение встроенного Python
    • 1.5. Встраивание Python в C++
    • 1.6. Компиляция и компоновка под Unix-подобными системами

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/extending/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API