gpt4 book ai didi

python - 访问 xrange 内部结构

转载 作者:太空狗 更新时间:2023-10-30 02:50:36 25 4
gpt4 key购买 nike

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

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

是否有任何标准方法可以在 python 本身中获取这些字段?

最佳答案

你可以在没有ctypes的情况下访问你需要的数据:

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

请注意,__reduce__() 方法正是用于序列化。阅读this chapter in documentation获取更多信息。

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

from ctypes import *

PyObject_HEAD = [
('ob_refcnt', c_size_t),
('ob_type', c_void_p),
]

class XRangeType(Structure):
_fields_ = PyObject_HEAD + [
('start', c_long),
('step', c_long),
('len', c_long),
]

range_obj = xrange(1, 11, 2)

c_range_obj = cast(c_void_p(id(range_obj)), POINTER(XRangeType)).contents
print c_range_obj.start, c_range_obj.step, c_range_obj.len

关于python - 访问 xrange 内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com