# CAPI
# 概述
CPython 是用 C 写成的,对外提供了 C API ,让用户可以从 C 环境中与其交互。 C API 分为两类: 泛型 API 以及 特型 API 。
# 泛型API
泛型 API 与类型无关,属于 抽象对象层 ( Abstract Object Layer ),简称 AOL 。 这类 API 参数是 PyObject* ,可处理任意类型的对象, API 内部根据对象类型区别处理。
例如print函数:
int PyObject_Print(PyObject *op, FILE *fp, int flags)
# 特型API
特型 API 与类型相关,属于 具体对象层 ( Concrete Object Layer ),简称 COL 。 这类 API 只能作用于某种类型的对象,例如浮点对象 PyFloatObject 。
Python 内部为每一种内置对象提供了这样一组 API ,例如:
PyObject * PyFloat_FromDouble(double fval)