浮点对象   PyFloatObject PyObject的子类型代表一个Python浮点对象. PyTypeObject PyFloat_Type 这个PyTypeObject表示Python浮点类型。这与Python层中float的对象相同. int PyFloat_Check( PyObject  *p) 如果参数为PyFloatObject或PyFloatObject. int PyFloat_CheckExact(的PyObject  *p) 如果它的参数是PyFloatObject,但不是PyFloatObject. PyObject * PyFloat_FromStri

布尔对象 Python中的布尔值实现为整数的子类。只有两个布尔,Py_False和Py_True。因此,正常创建和删除功能不适用于布尔值。然而,下面的宏可用. int PyBool_Check( PyObject  *o) 如果o则返回true类型为PyBool_Type. PyObject * Py_False Python False对象。这个对象没有方法。它需要像引用计数一样对任何其他对象进行预处理. PyObject* Py_True Python True对象。这个对象没有方法。它需要被视为与引用计数相关的任何其他对象. Py_RETURN_FALSE 从函数返回Py_False,正

整数对象 所有整数都实现为任意大小的“长”整数对象. 错误,大多数PyLong_As* API返回(return type)-1哪个不能区分一个号码。使用 PyErr_Occurred()消除歧义 PyLongObject 这个 的子类型PyObject代表一个Python整数对象. PyTypeObject PyLong_Type 这个的实例PyTypeObject表示Python整数类型。这是与int在Python层. int PyLong_Check(的PyObject  *p) 如果它的参数是PyLongObject或的子类型PyLongObject. int PyLong_Check

None宾语 注意PyTypeObject为None不直接暴露在Python / C API中。自None是单身,测试对象身份(使用==在C)就足够了。同样没有PyNone_Check()功能. PyObject* Py_None Python None对象,表示缺乏价值。这个对象没有方法。它需要被处理就像任何其他对象相关的referencecounts. Py_RETURN_NONE 正确处理返回Py_None从C函数内部(即增加None的引用计数并返回它。)

类型对象   PyTypeObject 用于描述内置类型的对象的C结构. PyObject* PyType_Type 这是类型对象的类型对象;它与Python层中的type是同一个对象. int PyType_Check( PyObject  *o) 如果对象o是一个类型对象,则返回true,包括从中派生的类型的实例标准类型对象。在所有其他情况下返回假. int PyType_CheckExact( PyObject  *o) 如果对象o是一个类型对象,但不是标准类型对象的子类型,则返回true。在所有其他情况下返回false . nsigned int PyType_ClearCa

旧缓冲协议 自3.0版以来已弃用. 这些函数是Python 2中“旧缓冲区协议”API的一部分。在Python 3中,该协议不再存在,但是这些函数是为了便于移植2.x代码。它们充当了新的缓冲协议,但它们不会让你控制缓冲区出现时获得的资源的生命周期. 因此,建议你调用PyObject_GetBuffer()(或y*或w* 使用函数族格式化代码PyArg_ParseTuple()获取缓冲区视图overan对象,并且PyBuffer_Release()可以释放缓冲区视图. intPyObject_AsCharBuffer( PyObject  *obj,const char  **buffer,Py

缓冲协议 Python中的某些对象可以访问底层的memoryarray或buffer。这些对象包括内置的bytes和bytearray,还有一些扩展类型,比如array.array。第三方图书馆可以为特殊目的定义自己的类型,例如图像处理或数值分析. 虽然这些类型中的每一种都有自己的语义,但它们共享由可能大的内存缓冲区支持的共同特征。在某些情况下,最好是直接访问缓冲区而不进行中间复制. Python以 bufferprotocol 的形式在C级提供了这样的工具。该协议有两个方面: 在生产者方面,类型可以导出一个“缓冲区接口”,允许该类型的对象公开有关其底层缓冲区的信息。这个接口在缓冲区对象结构;

迭代器协议 有两个专门用于处理迭代器的函数. int PyIter_Check( PyObject  *o) 如果对象o支持迭代器协议,则返回true。 PyObject* PyIter_Next( PyObject  *o) Return value: New reference. 从迭代o返回下一个值。该对象必须是一个迭代器(由调用者来检查它)。如果没有剩余值,则返回NULL,不设置任何异常。如果在检索项目时发生错误,则返回NULL并传递异常. 要编写一个遍历迭代器的循环,C代码应该看起来像这样: PyObject *iterator = PyObject_GetIter(obj); Py

映射协议 参见PyObject_GetItem(), PyObject_SetItem()和PyObject_DelItem(). int PyMapping_Check( PyObject  *o) return 1如果对象提供映射协议或支持切片,0除此以外。请注意,对于带有1方法的Python类,它返回__getitem__(),因为通常情况下无法确定它支持的键类型。这个功能总是在 Py_ssize_t PyMapping_Size( PyObject  *o) Py_ssize_t PyMapping_Length( PyObject  *o) 成功时返回对象o中的键数,-1失败。这相当

序列协议 int PySequence_Check( PyObject  *o) 返回1如果对象提供序列协议,和0否则。注意它返回1用于带有__getitem__()方法的Python类,除非它们是dict子类,因为一般情况下不可能确定是什么它支持的键的类型。这个功能总是成功的. Py_ssize_t PySequence_Size( PyObject  *o) Py_ssize_t PySequence_Length( PyObject  *o) 成功时返回o的对象数量,-1 onfailure。这相当于Python表达式len(o). PyObject * PySequence_Conca