扩展和嵌入 Python 解释器
************************

本文档介绍了如何用 C 或 C++ 编写模块，通过新增模块来扩展 Python 解释器
。这些模块可以完成 Python 代码所能完成的事情——定义函数、对象类型和方法
——但还可以与原生库交互，或通过避免解释器开销来获得更好的性能。本文档还
介绍了如何将 Python 解释器嵌入到另一个应用程序中，将其用作扩展语言。最
后，它还说明了如何编译和链接扩展模块，使其能够在底层操作系统支持此功能
的情况下被动态加载（在运行时）到解释器中。

阅读本文档需要有关 C 和 Python 的基础知识。 要获取 Python 的非正式介绍
，请参阅 Python 教程。  Python 语言参考手册 给出了该语言更正式的定义。
Python built-ins reference 文档介绍了内置函数和对象类型，而 The Python
standard library 文档记录了给予该语言广泛应用范围的各种模块（包括内置
的和用 Python 语言编写的）。

关于整个 Python/C API 的详细介绍，请参阅独立的 Python/C API 参考手册。

为了支持扩展，Python 的 C API（应用程序员接口）定义了一组函数、宏和变
量，可用来访问 Python 运行时系统的大多数方面。通过包含 ""Python.h"" 头
文件，可以将 Python API 引入到 C 源文件中。

备注:

  C 扩展接口特指 CPython，扩展模块无法在其他 Python 实现上工作。在大多
  数情况下，应该避免写 C 扩展，来保持可移植性。举个例子，如果你的用例
  调用了 C 库或系统调用，你应该考虑使用 "ctypes" 模块或 cffi 库，而不
  是自己写 C 代码。这些模块允许你写 Python 代码来接口 C 代码，并且相较
  于编写和编译 C 扩展模块，该方法在不同 Python 实现之间具有更高的可移
  植性。


推荐的第三方工具
================

本文档只涵盖作为此版本 CPython 一部分提供的、用于创建扩展的基本工具。
一些 第三方工具 为创建 Python 的 C 和 C++ 扩展提供了更简单也更复杂的方
式。

虽然本文档面向扩展作者，但也应当有助于此类工具的作者。例如，教程模块可
以作为构建工具的简单测试用例，或作为代码生成器预期输出的样例。


C API 教程
==========

本教程介绍如何使用 Python C API，即使用作为此版本 CPython 一部分提供的
基本工具，用 C 或 C++ 编写一个简单模块。

1. 你的第一个 C API 扩展模块


中级主题指南
============

本指南的这一部分包括在没有第三方工具帮助的情况下创建 C 和 C++ 扩展。它
主要用于这些工具的创建者，而不是建议你创建自己的 C 扩展的方法。

* 使用 C API: 杂项主题

* 自定义扩展类型：教程

* 定义扩展类型：杂项主题

* 构建 C/C++ 扩展

* 在 Windows 上构建 C 和 C++ 扩展


在更大的应用程序中嵌入 CPython 运行时
=====================================

有时，不是要创建在 Python 解释器中作为主应用程序运行的扩展，而是希望将
CPython 运行时嵌入到更大的应用程序中。 本节介绍了成功完成此操作所涉及
的一些细节。

* 在其它应用程序中嵌入 Python
