# Επέκταση και Ενσωμάτωση του Διερμηνέα της Python

Αυτό το έγγραφο περιγράφει πώς να γράφετε modules σε C ή C++ για να επεκτείνετε τον διερμηνέα της Python με νέα modules. Αυτά τα modules δεν μπορούν μόνο να ορίσουν νέες συναρτήσεις αλλά και νέους τύπους αντικειμένων και τις μεθόδους τους. Το έγγραφο επίσης περιγράφει πώς να ενσωματώσετε τον διερμηνέα της Python σε μια άλλη εφαρμογή, ώστε να χρησιμοποιείται ως γλώσσα επέκτασης. Τέλος, δείχνει πώς να μεταγλωττίζετε και να συνδέετε τα modules επέκτασης ώστε να μπορούν να φορτώνονται δυναμικά (κατά την εκτέλεση) στον διερμηνέα, εφόσον το υποκείμενο λειτουργικό σύστημα υποστηρίζει αυτήν τη λειτουργία.

Αυτό το έγγραφο προϋποθέτει βασικές γνώσεις Python. Για μια ανεπίσημη εισαγωγή στη γλώσσα, δείτε το Οδηγός εκμάθησης Python. Το Εγχειρίδιο Αναφοράς της Γλώσσας Python παρέχει έναν πιο επίσημο ορισμό της γλώσσας. Το The Python Standard Library τεκμηριώνει τους υπάρχοντες τύπους αντικειμένων, τις συναρτήσεις και τα modules (ενσωματωμένα και γραμμένα σε Python και τα δύο) που προσφέρουν στη γλώσσα το ευρύ πεδίο εφαρμογών της.

Για μια λεπτομερή περιγραφή ολόκληρου του Python/C API, δείτε το ξεχωριστό Python/C API Reference Manual.

## Προτεινόμενα εργαλεία τρίτων

Αυτός ο οδηγός καλύπτει μόνο τα βασικά εργαλεία για τη δημιουργία επεκτάσεων που παρέχονται ως μέρος αυτής της έκδοσης της CPython. Ορισμένα third party tools προσφέρουν απλούστερες και πιο εξελιγμένες προσεγγίσεις για τη δημιουργία επεκτάσεων C και C++ για Python.

## Δημιουργία επεκτάσεων χωρίς εργαλεία τρίτων

Αυτό το μέρος του οδηγού καλύπτει τη δημιουργία επεκτάσεων σε C και C++ χωρίς τη βοήθεια εργαλείων τρίτων. Απευθύνεται κυρίως σε δημιουργούς αυτών των εργαλείων, παρά ως προτεινόμενη μέθοδος για τη δημιουργία δικών σας επεκτάσεων σε C.

Δείτε επίσης

PEP 489 – Αρχικοποίηση πολυφασικής μονάδας επέκταση

- 1. Extending Python with C or C++
  - 1.1. A Simple Example
  - 1.2. Intermezzo: Errors and Exceptions
  - 1.3. Back to the Example
  - 1.4. The Module’s Method Table and Initialization Function
  - 1.5. Compilation and Linkage
  - 1.6. Calling Python Functions from C
  - 1.7. Extracting Parameters in Extension Functions
  - 1.8. Keyword Parameters for Extension Functions
  - 1.9. Building Arbitrary Values
  - 1.10. Reference Counts
  - 1.11. Writing Extensions in C++
  - 1.12. Providing a C API for an Extension Module
- 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. Finalization and De-allocation
  - 3.2. Object Presentation
  - 3.3. Attribute Management
  - 3.4. Object Comparison
  - 3.5. Abstract Protocol Support
  - 3.6. Weak Reference Support
  - 3.7. More Suggestions
- 4. Κατασκευή Επεκτάσεων C και C++
  - 4.1. Κατασκευή Επεκτάσεων C και C++ με το setuptools
- 5. Building C and C++ Extensions on Windows
  - 5.1. A Cookbook Approach
  - 5.2. Differences Between Unix and Windows
  - 5.3. Using DLLs in Practice

## Ενσωμάτωση του χρόνου εκτέλεσης της CPython σε μεγαλύτερη εφαρμογή

Μερικές φορές, αντί να δημιουργήσουμε μια επέκταση που εκτελείται μέσα στον διερμηνέα της Python ως κύρια εφαρμογή, είναι προτιμότερο να ενσωματώσουμε τον χρόνο εκτέλεσης της CPython σε μια μεγαλύτερη εφαρμογή. Αυτή η ενότητα καλύπτει μερικές λεπτομέρειες για το πώς να το κάνετε αυτό με επιτυχία.

- 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