파이썬 인터프리터 확장 및 내장
******************************

이 문서는 새로운 모듈로 파이썬 인터프리터를 확장하기 위해 C 나 C++로
모듈을 작성하는 방법을 설명합니다. 이러한 모듈은 새로운 함수뿐만 아니
라 새로운 객체 형과 메서드를 정의할 수 있습니다. 또한, 확장 언어로 사
용하기 위해, 파이썬 인터프리터를 다른 응용 프로그램에 내장시키는 방법
에 관해서도 설명합니다. 마지막으로, 하부 운영 체제에서 이 기능을 지원
하는 경우, 동적으로 (실행시간에) 인터프리터에 로드될 수 있도록 확장 모
듈을 컴파일하고 링크하는 방법을 보여줍니다.

이 문서는 파이썬에 대한 기본 지식을 전제로 합니다. 언어에 대한 형식적
이지 않은 소개는 파이썬 자습서 를 보십시오. 파이썬 언어 레퍼런스 는 보
다 형식적인 언어 정의를 제공합니다. 파이썬 표준 라이브러리 는 존재하는
객체 형, 함수 및 모듈(내장된 것과 파이썬으로 작성된 것 모두)을 설명하
는데, 이것들이 언어의 응용 범위를 넓힙니다.

전체 파이썬/C API에 대한 자세한 설명은 별도의 파이썬/C API 레퍼런스 설
명서 를 참조하십시오.


권장 제삼자 도구
================

이 지침서는 이 버전의 CPython의 일부로 제공되는, 확장을 만들기 위한 기
본 도구만을 다룹니다. Cython, cffi, SWIG 와 Numba  와 같은 제삼자 도구
는 파이썬을 위한 C와 C++ 확장을 만드는 더 간단하고 세련된 접근법을 제
공합니다.

더 보기:

  파이썬 패키징 사용자 지침서: 바이너리 확장
     파이썬 패키징 사용자 지침서는 바이너리 확장의 생성을 단순화하는
     몇 가지 사용 가능한 도구를 다루고 있을 뿐만 아니라, 확장 모듈을
     만드는 것이 왜 바람직한지 여러 가지 이유에 대해서도 논의합니다.


제삼자 도구 없이 확장 만들기
============================

지침서의 이 부문에서는 제삼자 도구의 도움 없이 C와 C++ 확장을 만드는
방법에 관해 설명합니다. 여러분 자신의 C 확장을 만드는 데 권장되는 방법
이라기보다는, 주로 도구를 제작하는 사람들을 대상으로 합니다.

* 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. distutils로 C와 C++ 확장 빌드하기

  * 4.2. 확장 모듈 배포하기

* 5. 윈도우에서 C와 C++ 확장 빌드하기

  * 5.1. 요리책 접근법

  * 5.2. 유닉스와 윈도우의 차이점

  * 5.3. DLL을 실제로 사용하기


더 큰 응용 프로그램에 CPython 런타임을 내장하기
===============================================

때로는, 파이썬 인터프리터를 메인 응용 프로그램으로 사용하고 그 안에서
실행되는 확장을 만드는 대신, CPython 런타임을 더 큰 응용 프로그램에 내
장하는 것이 바람직합니다. 이 절에서는 이를 성공적으로 수행하는 데 관련
된 몇 가지 세부 사항에 관해 설명합니다.

* 1. 다른 응용 프로그램에 파이썬 내장하기

  * 1.1. 매우 고수준의 내장

  * 1.2. 매우 고수준 내장을 넘어서: 개요

  * 1.3. 순수한 내장

  * 1.4. 내장된 파이썬을 확장하기

  * 1.5. C++로 파이썬 내장하기

  * 1.6. 유닉스 계열 시스템에서 컴파일과 링크하기
