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

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

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

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


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

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.

더 보기:

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


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

지침서의 이 부문에서는 제삼자 도구의 도움 없이 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 setuptools

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