Python C 扩展编程全解析
1. Python C 扩展基础
在 Python C 扩展编程中, Py_BuildValue
函数是一个非常重要的工具,它可以将 C 数据转换为 Python 对象。以下是一些常见的使用示例:
return Py_BuildValue("i", 34); // Return an integer
return Py_BuildValue("d", 3.4); // Return a double
return Py_BuildValue("s", "Hello"); // Null-terminated UTF-8 string
return Py_BuildValue("(ii)", 3, 4); // Tuple (3, 4)
在每个扩展模块的底部,通常会有一个函数表,用于列出 C 函数、Python 中使用的名称以及文档字符串。所有模块都需要指定这样一个表,因为它在模块初始化时会被使用。最后, PyInit_sample()
是模块初始化函数,在模块首次导入时执行,其主要任务是向解释器注册模块对象。
需要注意的是,用 C 函数扩展 Python 远不止这里展示的内容,C API 包含超过 500 个函数。这里的示例只是一个入门的起点,若要深入学习,可以从 PyArg_ParseTuple()
和 Py_BuildValue()
函数的文档开始。