Python C API的使用详解(一)

简介

介绍一下Python虚拟机的初始化及退出,Python基本数据类型的对象创建以及C和Python之间的数据类型互相转换。

Python虚拟机的初始化及退出

初始化Python虚拟机需要调用Py_Initialize()来实现。

Py_IsInitialized()用于判断Python虚拟机初始化是否成功,True是成功,False是失败。

C/C++中调用Python之前必须先初始化虚拟机。

退出虚拟机的时候调用Py_Finalize()

进程退出时要退出Python虚拟机。

实例:

编译方式及参数:

PyObject

Python的所有对象类型都是此类型的扩展。 这是一种类型,它包含Python将对象的指针视为对象所需的信息。 在正常的“发布”版本中,它仅包含对象的引用计数和指向相应类型对象的指针。 实际上没有任何东西被声明为PyObject,但是每个指向Python对象的指针都可以转换为PyObject *。 必须使用宏Py_REFCNT和Py_TYPE来访问成员。

宏描述,不包括全部

Py_BuildValue

可以使用其将C的所有基本数据类型转换成Python可访问的数据类型。

标识符介绍:

[items]

(list) [matching-items]将一系列C值转换为具有相同项目数的Python列表。{items}(dict) [matching-items] 将一系列C值转换为Python字典。每对连续的C值将一个项添加到字典中,分别用作键和值。如果格式字符串中存在错误,则设置SystemError异常并返回NULL。

创建整型的Python对象

使用Py_BuildValue创建整型对象。

创建长整型的Python对象

创建浮点类型的Python对象

创建布尔类型对象

创建Python string对象

创建unicode字符串对象

使用Py_None

Py_None是一个全局的变量

main函数

本文为原创文章,未经授权禁止转载本站文章。
原文出处:兰玉磊的个人博客
原文链接:https://www.fdevops.com/2020/03/08/python-c-api-1
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注