# Rozszerzony i wbudowany interpreter Python

Ten dokument opisuje jak pisać moduły w C lub C++ do rozszerzania Python Interpreter o nowe moduły. Te moduły mogą nie tylko zawierać nowe funkcje, ale też nowe obiekty i ich metody. Dokument również zawiera opis jak wbudować interpreter Pyhona do innej aplikacji w celu rozszerzenia języka. Podsumowując pokażemy ci jak kompilować i linkować rozszerzone moduły, tak że mogą być załadowane dynamicznie w danej chwili przez interpreter, o ile dany system operacyjny wspiera tą funkcję.

Ten dokument zawiera podstawową wiedzę o Pythonie. Z nieformalnym wstępem do języka zapoznaj się z Python Tutorial. Dokumentacja języka Python zawiera bardziej formalny opis języka. Dokumenty Biblioteka standardowa Pythona zawierają istniejące typy obiektów, funkcje i moduły (zarówno wbudowane jak i napisane w Pythonie) dające językowi duże pole zastosowań.

Aby zapoznać się z dokładną instrukcją dla Python/C API, spójrz na Python/C API Reference Manual.

## Rekomendowane zewnętrzne narzędzia.

This guide only covers the basic tools for creating extensions provided as part of this version of CPython. Third party tools like Cython, cffi, SWIG and Numba offer both simpler and more sophisticated approaches to creating C and C++ extensions for Python.

Zobacz także

Pakiety Pythona Podręcznik Użytkownika: Rozszerzenia Binarne <https://packaging.python.org/guides/packaging-binary-extensions/

  Przewodnik Użytkownika Python Packaging nie tylko obejmuje kilka dostępnych narzędzi, które upraszczają tworzenie rozszerzeń binarnych, ale także omawia różne powody, dla których tworzenie modułu rozszerzeń może być pożądane w pierwszej kolejności.

## Tworzenie rozszerzeń poprzez narzędzia zewnętrzne.

Ta część przewodnika obejmuje tworzenie rozszerzeń C i C++ bez pomocy narzędzi innych firm. Jest przeznaczony przede wszystkim dla twórców tych narzędzi, a nie jest zalecanym sposobem tworzenia własnych rozszerzeń C.

- 1. Rozszerzanie Pythona za pomocą C lub C++
  - 1.1. Prosty przykład
  - 1.2. Intermezzo: Błędy i Wyjątki
  - 1.3. Z powrotem do Przykładu
  - 1.4. Zadanie zainicjowania i tabela sposobów postępowania modułu.
  - 1.5. Kompilacja i łączenie
  - 1.6. Wywoływanie zadań języka pytonowskiego z C
  - 1.7. Wydobywanie parametrów w zadaniach rozszerzających
  - 1.8. Parametry kluczowe dla zadań rozszerzających
  - 1.9. Budowanie dowolnych wartości
  - 1.10. Liczby odniesień
  - 1.11. Pisanie rozszerzeń w C++
  - 1.12. Dostarczanie sprzęgu programowania aplikacji (API) języka C dla modułu rozszerzającego
- 2. Defining Extension Types: Tutorial
  - 2.1. The Basics
  - 2.2. Adding data and methods to the Basic example
  - 2.3. Providing finer control over data attributes
  - 2.4. Supporting cyclic garbage collection
  - 2.5. Subclassing other types
- 3. Defining Extension Types: Assorted Topics
  - 3.1. Finalizowanie i de-alokacja
  - 3.2. Prezentacja Przedmiotów
  - 3.3. Zarządzanie własnościami
  - 3.4. Porównywanie przedmiotów
  - 3.5. Wsparcie protokołu abstrakcyjnego
  - 3.6. Wsparcie dla słabych odniesień
  - 3.7. Więcej sugestii
- 4. Building C and C++ Extensions
  - 4.1. Building C and C++ Extensions with setuptools
- 5. Tworzenie rozszerzeń C i C++ w Windowsie
  - 5.1. A Cookbook Approach
  - 5.2. Różnice pomiędzy Unixem a Windowsem
  - 5.3. Using DLLs in Practice

## Wbudowywanie Cpython runtime w większą aplikację.

Czasami zamiast tworzyć rozszerzenie, które działa wewnątrz interpretera Pythona jako głównej aplikacji, pożądane jest osadzenie środowiska wykonawczego CPython w większej aplikacji. W tej sekcji omówiono niektóre szczegóły związane z pomyślnym wykonaniem tego zadania.

- 1. Embedding Python in Another Application
  - 1.1. Very High Level Embedding
  - 1.2. Beyond Very High Level Embedding: An overview
  - 1.3. Pure Embedding
  - 1.4. Extending Embedded Python
  - 1.5. Embedding Python in C++
  - 1.6. Compiling and Linking under Unix-like systems