IC验证必备技能——python/C API 基础教程
发布时间:2026/11/2 6:11:29 锦皓数字建站

以下教程面向完全不接触过 Python/C API 的小白,从环境准备到扩展模块、嵌入应用,逐步讲解常用函数和宏,并配以具体示例代码,帮助你快速上手。环境准备安装 Python 开发头文件在 Linux 上,一般需要安装对应版本的python3-dev(Debian/Ubuntu)或python3-devel(Fedora/CentOS)包,以提供Python.h等头文件和链接库。编译命令示例gcc-O2-I/usr/include/python3.11\-oembed_app embed_app.c-lpython3.11其中-I指定头文件路径,-lpython3.11链接 Python 解释器库。1. 初始化与终结1.1Py_Initialize()/Py_FinalizeEx()在任何调用其他 C API 之前,必须先启动解释器:#includePython.hintmain(){Py_Initialize();// 启动 Python 解释器 ([Python documentation](https://docs.python.org/3/c-api/intro.html))/* ... 调用其它 API ... */Py_FinalizeEx();// 安全终结解释器 ([Python documentation](https://docs.python.org/3/c-api/intro.html))return0;}可选检查:if (!Py_IsInitialized())用于确认解释器状态 (Python documentation)。2. 对象与引用计数2.1PyObject *与Py_INCREF/Py_DECREF所有 Python 对象都以PyObject*表示,引用计数必须严格管理:PyObject*obj=PyLong_FromLong(10);// 新引用 ([Python documentation](https://docs.python.org/3/c-api/index.html))/* 使用 obj */Py_DECREF(obj);// 释放引用 ([Python documentation](https://docs.python.org/3/c-api/index.html))Py_INCREF(o)用于增加引用,Py_DECREF(o)可能触发真正的释放。2.2 借用引用 vs 新引用借用引用(Borrowed Reference):如PyList_GetItem()返回的对象,不应调用Py_DECREF(Python documentation)。新引用(New Reference):如PyLong_FromLong()、PyTuple_Pack()等返回的新对象,使用后必须Py_DECREF。3. 基本类型与转换3.1 从 C 到 PythonPyObject*py_int=PyLong_FromLong(42);// 整数 ([Python documentation](https://docs.python.org/3/c-api/index.html))PyObject*py_f
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。