【发布时间】:2014-07-14 20:38:04
【问题描述】:
我很确定我没有找对地方,因为关于这个主题的信息非常难以获得。
我在 C++ 中有一个小函数,Python 将调用它并创建一个小的浮点数组并将它们返回给 Python。
首先,您似乎不能使用 Py_BuildValue() 在 C++ 中将任意大小的数组作为 Python 中的列表返回(我不清楚为什么会这样)。一篇旧但仍然相关的帖子here 建议实例化一个 PyList 对象,用数组中的元素填充它,然后返回它。
这是一个可接受的解决方案。但是,我的数字是 C++ 风格的浮点数。虽然 Python 库提供了充足的转换操作(C 字符串 -> Python 字符串、C 双精度 -> Python 浮点数等),但我找不到将 C++ 浮点数简单地转换为 Python 浮点数的方法。我知道 Python 浮点数等同于 C/C++ 双精度数,所以我想我可以将浮点数转换为双精度数,然后通过 PyFloat_FromDouble() 转换为 PyObject,但我觉得必须存在一种更直接的方法来做到这一点。
因为这是一个非常短的函数,而且主要是一个概念证明,所以我认为没有必要花时间学习 SWIG 或 Boost Python 之类的东西;我想用内置的 Python/C++ API 来做到这一点。任何建议将不胜感激!
【问题讨论】: