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

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

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

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


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

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

더 보기:

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


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

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

* 1. C나 C++로 파이썬 확장하기

  * 1.1. 간단한 예

  * 1.2. 막간극: 에러와 예외

  * 1.3. 예제로 돌아가기

  * 1.4. 모듈의 메서드 테이블과 초기화 함수

  * 1.5. 컴파일과 링크

  * 1.6. C에서 파이썬 함수 호출하기

  * 1.7. 확장 함수에서 매개 변수 추출하기

  * 1.8. 확장 함수를 위한 키워드 매개 변수

  * 1.9. 임의의 값을 구축하기

  * 1.10. 참조 횟수

  * 1.11. C++로 확장 작성하기

  * 1.12. 확장 모듈을 위한 C API 제공하기

* 2. 확장형 정의하기: 자습서

  * 2.1. 기초

  * 2.2. 기초 예제에 데이터와 메서드 추가하기

  * 2.3. 데이터 어트리뷰트를 더 세밀하게 제어하기

  * 2.4. 순환 가비지 수거 지원하기

  * 2.5. 다른 형의 서브 클래싱

* 3. 확장형 정의하기: 여러 가지 주제

  * 3.1. 파이널리제이션과 할당 해제

  * 3.2. 객체 표현

  * 3.3. 어트리뷰트 관리

  * 3.4. 객체 비교

  * 3.5. 추상 프로토콜 지원

  * 3.6. 약한 참조 지원

  * 3.7. 추가 제안

* 4. C와 C++ 확장 빌드하기

  * 4.1. Building C and C++ Extensions with distutils

  * 4.2. Distributing your extension modules

* 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. 유닉스 계열 시스템에서 컴파일과 링크하기
