Документация Python неофициальный перевод

index.md

81 строк · 11.1 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.10/extending/index.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Расширение и встраивание интерпретатора Python89В этом документе описывается, как писать модули на C или C++ для расширения Python интерпретатора новыми модулями. Такие модули могут не только определять новые функции но и новые типы объектов и их методы. В документе также описывается, как встроить интерпретатор Python в другое приложение для использования в качестве языка расширения. Наконец, показано, как компилировать и компоновать модули расширения, чтобы их можно было динамически загружать (во время выполнения) в интерпретатор, если базовая операционная система поддерживает эту возможность.1011В этом документе предполагается базовое знание Python. Для неформального введения в язык, см. [Руководство по Python](https://python-all.ru/3.10/tutorial/index.html#tutorial-index). [Справочник по языку Python](https://python-all.ru/3.10/reference/index.html#reference-index) дает более формальное определение языка. [Стандартная библиотека Python](https://python-all.ru/3.10/library/index.html#library-index) документирует существующие типы объектов, функции и модули (как встроенные, так и написанные на Python), которые обеспечивают широкий спектр применения языка.1213За подробным описанием всего Python/C API см. отдельное [Справочное руководство по Python/C API](https://python-all.ru/3.10/c-api/index.html#c-api-index).1415## Рекомендуемые сторонние инструменты1617Это руководство охватывает только базовые инструменты для создания расширений, предоставляемые в составе этой версии CPython. Сторонние инструменты, такие как [Cython](https://python-all.ru/3.10/extending/index.html), [cffi](https://python-all.ru/3.10/extending/index.html), [SWIG](https://python-all.ru/3.10/extending/index.html) и [Numba](https://python-all.ru/3.10/extending/index.html), предлагают как более простые, так и более сложные подходы к созданию расширений на C и C++ для Python.1819> **См. также**20>21> **[Руководство пользователя по упаковке Python: Бинарные расширения](https://python-all.ru/3.10/extending/index.html)**22>23> Руководство пользователя по упаковке Python (Python Packaging User Guide) не только охватывает несколько доступных инструментов, упрощающих создание двоичных расширений, но и обсуждает различные причины, по которым создание модуля расширения может быть желательным в первую очередь.2425## Создание расширений без сторонних инструментов2627Этот раздел руководства охватывает создание C- и C++-расширений без использования сторонних инструментов. Он предназначен в первую очередь для создателей таких инструментов, а не как рекомендуемый способ создания собственных C-расширений.2829- [1. Расширение Python с помощью C или C++](https://python-all.ru/3.10/extending/extending.html)3031  - [1.1. Простой пример](https://python-all.ru/3.10/extending/extending.html#a-simple-example)32  - [1.2. Интермеццо: ошибки и исключения](https://python-all.ru/3.10/extending/extending.html#intermezzo-errors-and-exceptions)33  - [1.3. Возвращение к примеру](https://python-all.ru/3.10/extending/extending.html#back-to-the-example)34  - [1.4. Таблица методов модуля и функция инициализации](https://python-all.ru/3.10/extending/extending.html#the-module-s-method-table-and-initialization-function)35  - [1.5. Компиляция и компоновка](https://python-all.ru/3.10/extending/extending.html#compilation-and-linkage)36  - [1.6. Вызов функций Python из C](https://python-all.ru/3.10/extending/extending.html#calling-python-functions-from-c)37  - [1.7. Извлечение параметров в функциях расширения](https://python-all.ru/3.10/extending/extending.html#extracting-parameters-in-extension-functions)38  - [1.8. Именованные параметры для функций расширения](https://python-all.ru/3.10/extending/extending.html#keyword-parameters-for-extension-functions)39  - [1.9. Построение произвольных значений](https://python-all.ru/3.10/extending/extending.html#building-arbitrary-values)40  - [1.10. Счетчики ссылок](https://python-all.ru/3.10/extending/extending.html#reference-counts)41  - [1.11. Написание расширений на C++](https://python-all.ru/3.10/extending/extending.html#writing-extensions-in-c)42  - [1.12. Предоставление C API для модуля расширения](https://python-all.ru/3.10/extending/extending.html#providing-a-c-api-for-an-extension-module)43- [2. Определение типов расширения: учебное пособие](https://python-all.ru/3.10/extending/newtypes_tutorial.html)4445  - [2.1. Основы](https://python-all.ru/3.10/extending/newtypes_tutorial.html#the-basics)46  - [2.2. Добавление данных и методов в базовый пример](https://python-all.ru/3.10/extending/newtypes_tutorial.html#adding-data-and-methods-to-the-basic-example)47  - [2.3. Предоставление более точного контроля над атрибутами данных](https://python-all.ru/3.10/extending/newtypes_tutorial.html#providing-finer-control-over-data-attributes)48  - [2.4. Поддержка циклической сборки мусора](https://python-all.ru/3.10/extending/newtypes_tutorial.html#supporting-cyclic-garbage-collection)49  - [2.5. Наследование от других типов](https://python-all.ru/3.10/extending/newtypes_tutorial.html#subclassing-other-types)50- [3. Определение типов расширения: разные темы](https://python-all.ru/3.10/extending/newtypes.html)5152  - [3.1. Финализация и освобождение памяти](https://python-all.ru/3.10/extending/newtypes.html#finalization-and-de-allocation)53  - [3.2. Представление объектов](https://python-all.ru/3.10/extending/newtypes.html#object-presentation)54  - [3.3. Управление атрибутами](https://python-all.ru/3.10/extending/newtypes.html#attribute-management)55  - [3.4. Сравнение объектов](https://python-all.ru/3.10/extending/newtypes.html#object-comparison)56  - [3.5. Поддержка абстрактных протоколов](https://python-all.ru/3.10/extending/newtypes.html#abstract-protocol-support)57  - [3.6. Поддержка слабых ссылок](https://python-all.ru/3.10/extending/newtypes.html#weak-reference-support)58  - [3.7. Дополнительные предложения](https://python-all.ru/3.10/extending/newtypes.html#more-suggestions)59- [4. Сборка расширений на C и C++](https://python-all.ru/3.10/extending/building.html)6061  - [4.1. Сборка расширений на C и C++ с помощью distutils](https://python-all.ru/3.10/extending/building.html#building-c-and-c-extensions-with-distutils)62  - [4.2. Распространение модулей расширения](https://python-all.ru/3.10/extending/building.html#distributing-your-extension-modules)63- [5. Сборка расширений на C и C++ в Windows](https://python-all.ru/3.10/extending/windows.html)6465  - [5.1. Рецептурный подход](https://python-all.ru/3.10/extending/windows.html#a-cookbook-approach)66  - [5.2. Различия между Unix и Windows](https://python-all.ru/3.10/extending/windows.html#differences-between-unix-and-windows)67  - [5.3. Использование DLL на практике](https://python-all.ru/3.10/extending/windows.html#using-dlls-in-practice)6869## Встраивание среды выполнения CPython в более крупное приложение7071Иногда вместо создания расширения, работающего внутри интерпретатора Python как основного приложения, желательно встроить среду выполнения CPython в более крупное приложение. В этом разделе рассматриваются некоторые детали, необходимые для успешного выполнения этой задачи.7273- [1. Встраивание Python в другое приложение](https://python-all.ru/3.10/extending/embedding.html)7475  - [1.1. Встраивание на очень высоком уровне](https://python-all.ru/3.10/extending/embedding.html#very-high-level-embedding)76  - [1.2. За пределами встраивания на очень высоком уровне: обзор](https://python-all.ru/3.10/extending/embedding.html#beyond-very-high-level-embedding-an-overview)77  - [1.3. Чистое встраивание](https://python-all.ru/3.10/extending/embedding.html#pure-embedding)78  - [1.4. Расширение встроенного Python](https://python-all.ru/3.10/extending/embedding.html#extending-embedded-python)79  - [1.5. Встраивание Python в C++](https://python-all.ru/3.10/extending/embedding.html#embedding-python-in-c)80  - [1.6. Компиляция и компоновка в Unix-подобных системах](https://python-all.ru/3.10/extending/embedding.html#compiling-and-linking-under-unix-like-systems)81