![]() |
1
3
这看起来像是一个X-Y问题(即,您认为需要从C级的一堆Python对象中提取数据,但实际上您将受益于拥有一个暴露 全部的 您的数据)。
Python
即,它不作为C长度存储在内部。
Internally it is stored
作为整数数组(
显然,只有当你知道你有一个Python时,这才适用
我认为您实际想要的是将数据存储在一个C整数的大数组中。这可以通过
在C级别上,这些对象支持 the buffer protocol 在那里,它们将该内部数组暴露给C,允许从C访问、复制、操作等每个值。 一些未经测试的快速说明性代码:
|
![]() |
2
0
这似乎是一个与数据结构抽象相关的设计问题。通常,希望给用户提供不透明的数据结构或指针。访问内部元素需要一个方法(或函数)调用。
从…起
该调用可能正在对PyLongObject进行内部转换,PyLongObject可以是指向其内部对象的链接。如果您在-5到256之间传递,它将用其内部对象替换您的整数。对于其他对象,将创建一个新对象。即使找到了内部内存位置,也不能保证行为保持一致。 PyObject的设计似乎是不透明的。这样对待它。 |
![]() |
3
0
有一个内部CPython函数,它可以执行您想要的操作,称为
它似乎从一个名为
|
![]() |
G.Hovhannisyan · 如何使python在通过boost::python对std::vector进行迭代期间不从boost::shared\u ptr创建/复制pyobject? 7 年前 |
![]() |
Mike · 如何在boost::python中“从未来导入分区”呢? 7 年前 |
![]() |
Caduchon · 使用多个Python版本构建Boost 10 年前 |