什么是Python中的PyObject?

时间:2014-12-29 05:18:46

标签: python c python-extensions

简短版

我最近遇到了一些Python代码,其中函数的返回类型在the documentation中被指定为PyObject。什么是PyObject

详细版本

我不是C / C ++程序员,但当我在上面链接的文档中遇到PyObject时,Google告诉我PyObject是使用Python / C API定义的Python对象。具体来说,API documentation定义PyObject如下:

  

所有对象类型都是此类型的扩展名。这是一种类型   包含Python处理指向对象的指针所需的信息   作为一个对象。在正常的“发布”版本中,它只包含   对象的引用计数和指向相应类型的指针   宾语。它对应于扩展所定义的字段   PyObject_HEAD宏。

坦率地说,我并不完全理解这一点,或者它是否回答了我的基本问题,但它并没有让我觉得将PyObject想象成一个Python对象显然是错误的,完全停止。另一方面,也许从技术上算作PyObject,必须使用Python / C API将类型创建为标准Python的扩展。例如,是一个整数PyObject

可能相关的链接

http://docs.scipy.org/doc/numpy/reference/c-api.types-and-structures.html

2 个答案:

答案 0 :(得分:14)

你在Python中可以触及的每个值都是C中的PyObject。包括列表,字典,套接字,文件,整数,字符串,函数,类,你可以命名它。如果你可以用Python触摸它,那么它就是C中的PyObject

答案 1 :(得分:6)

PyObject实际上只是C级的Python对象。由于Python中的整数是对象,因此它们也是PyObject。无论是用Python还是用C语言编写,无论是C级都是PyObject