# Python Yorumlayıcısını Genişletme ve Gömme

Bu belge, Python yorumlayıcısını yeni modüllerle genişletmek için C veya C++’da modüllerin nasıl yazılacağını açıklar. Bu modüller sadece yeni fonksiyonları değil, aynı zamanda yeni nesne tiplerini ve metotlarını da tanımlayabilir. Belge ayrıca Python yorumlayıcısının bir uzantı dili olarak kullanılmak üzere başka bir uygulamaya nasıl yerleştirileceğini de açıklar. Son olarak, temeldeki işletim sistemi bu özelliği destekliyorsa, uzantı modüllerinin yorumlayıcıya dinamik olarak (çalışma zamanında) yüklenebilmesi için nasıl derleneceğini ve bağlanacağını gösterir.

Bu belge, Python hakkında temel bilgiye sahip olduğunuzu varsayar. Dile gayri resmi bir giriş için bkz. The Python Standard Library. The Python Standard Library, dilin daha resmi bir tanımını verir. The Python Standard Library, dile geniş uygulama yelpazesi sağlayan mevcut nesne türlerini, işlevleri ve modülleri (hem yerleşik hem de Python’da yazılmış) belgeler.

Tüm Python/C API’sinin ayrıntılı açıklaması için ayrı Python/C API Referans Kılavuzu’a bakın.

## Önerilen üçüncü taraf araçları

Bu kılavuz, yalnızca CPython’un bu sürümünün bir parçası olarak sağlanan uzantıları oluşturmak için temel araçları kapsar. Cython, cffi, SWIG ve Numba gibi üçüncü taraf araçlar, Python için C ve C++ uzantıları oluşturmaya yönelik hem daha basit hem de daha karmaşık yaklaşımlar sunar.

Ayrıca bakınız

Python Paketleme Kullanıcı Kılavuzu: İkili Uzantılar

  Python Paketleme Kullanıcı Kılavuzu, yalnızca ikili uzantıların oluşturulmasını basitleştiren çeşitli mevcut araçları kapsamakla kalmaz, aynı zamanda bir uzantı modülü oluşturmanın en başta neden istenebileceğinin çeşitli nedenlerini de tartışır.

## Üçüncü taraf araçları olmadan uzantılar oluşturma

Kılavuzun bu bölümü, üçüncü taraf araçlardan yardım almadan C ve C++ uzantıları oluşturmayı kapsar. Kendi C uzantılarınızı oluşturmanız için önerilen bir yol olmaktan ziyade, öncelikle bu araçların yaratıcılarına yöneliktir.

- 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. Building C and C++ Extensions
  - 4.1. Building C and C++ Extensions with distutils
  - 4.2. Distributing your extension modules
- 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 çalışma zamanını daha büyük bir uygulamaya gömme

Bazen, ana uygulama olarak Python yorumlayıcısının içinde çalışan bir uzantı oluşturmak yerine, bunun yerine CPython çalışma zamanını daha büyük bir uygulamanın içine gömmek tercih edilir. Bu bölüm, bunu başarılı bir şekilde yapmakla ilgili bazı ayrıntıları içerir.

- 1. Python’ı Başka Bir Uygulamaya Gömme
  - 1.1. Çok Üst Düzey Gömme
  - 1.2. Çok Yüksek Düzeyde Gömmenin Ötesinde: Genel Bir Bakış
  - 1.3. Saf Gömme
  - 1.4. Gömülü Python’u Genişletme
  - 1.5. Python’u C++’a Gömmek
  - 1.6. Unix benzeri sistemler altında Derleme ve Bağlama