【发布时间】:2016-02-01 22:42:13
【问题描述】:
我使用了 python c api 并希望从 python 中获取一个数组。我从 python 端返回了一个 python 数组,并希望将 PyObject* 结果传输到一个 c 数组中以便我可以使用它。
有没有我能做到的?
附带问题:在什么情况下尝试返回数组中的元素,例如
return arr[3]
会导致 PyObject_callobject 返回 NULL 吗?
return arr
确实给了我一些东西
【问题讨论】:
-
当你说你想将
PyObject *结果转换成一个C数组时,你的意思是PyObject *的C数组还是你想把那些数组成员对象转换成更原生的C也代表? -
@KenClement 我可能也会这么说。如果我没记错的话,我可以使用 Pystring_fromstring 单独翻译它的成员。在旁注中,当我在 python 中执行 type(arr[3]) 时,它告诉我它是 unicode。这对字符串有什么影响吗?
-
您在使用
Pystring_fromstring方面走在正确的轨道上,但您使用的 Python 版本(2.7 或 3.5)确实很重要。 (另外,我可能应该问您使用的是 CPython 还是 IronPython 还是 PyPy - 我从您的评论中猜测它是 CPython)2.7 和 3.5 之间的差异将决定 unicode 是否与str有所不同。在 CPython 2.7str通常处理窄字符数据 - 而不是 unicode。在 3.5 中,这种区别已被删除(所有字符串都是 unicode)。 AP{I 在这方面不兼容。你是哪个版本的?
标签: python c++ arrays python-c-api