python如何从Python对象中提取C的值?
这取决于对象的类型。 如果是元组,PyTuple_Size()
可返回其长度而 PyTuple_GetItem()
可返回指定序号上的项。 对于列表也有类似的函数 PyListSize()
和 PyList_GetItem()
。
对于字节串,PyBytes_Size()
可返回其长度而 PyBytes_AsStringAndSize()
提供一个指向其值和长度的指针。 请注意 Python 字节串可能为空,因此 C 的 strlen()
不应被使用。
要检测一个对象的类型,首先要确保它不为 NULL
,然后使用 PyBytes_Check()
, PyTuple_Check()
, PyList_Check()
等等。
还有一个针对 Python 对象的高层级 API,通过所谓的‘抽象’接口提供 —— 请参阅 Include/abstract.h
了解详情。 它允许使用 PySequence_Length()
, PySequence_GetItem()
这样的调用来与任意种类的 Python 序列进行对接,此外还可使用许多其他有用的协议例如数字 (PyNumber_Index()
等) 以及 PyMapping API 中的各种映射等等。
来源:PY学习网:原文地址:https://www.py.cn/article.html