访问xrange内部结构

2024-09-29 23:18:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用ctypes从内部python结构中提取数据。也就是说,我试图读取xrange中的4个字段:

typedef struct {
    PyObject_HEAD
    long    start;
    long    step;
    long    len;
} rangeobject;

在python内部有没有获取这些字段的标准方法?在


Tags: 数据方法标准lenstepctypes结构start
2条回答

ctypes模块不是用来访问Python内部的。ctypes允许您用C术语处理C库,但是使用Python进行编码。在

您可能需要一个C扩展,这在很多方面与ctypes相反。使用C扩展,可以用Python术语处理Python代码,但是用C语言处理代码

更新:既然您想要纯Python,为什么需要访问内置xrange对象的内部呢?xrange非常简单:用Python创建自己的xrange,然后用它做您想做的事情。在

您无需ctypes即可访问所需的数据:

>>> obj = xrange(1,11,2)
>>> obj.__reduce__()[1]
(1, 11, 2)
>>> len(obj)
5

注意,__reduce__()方法正是用于序列化的。有关详细信息,请阅读this chapter in documentation。在

更新:但是您也可以使用ctypes访问内部数据:

^{pr2}$

相关问题 更多 >

    热门问题