【发布时间】:2026-01-15 16:45:02
【问题描述】:
我正在使用 Python C API 来调用方法。目前我正在使用PyObject_CallMethodObjArgs 来执行此操作。这是一个可变参数函数:
PyObject* PyObject_CallMethodObjArgs(PyObject *o, PyObject *name, ..., NULL)
当参数的数量在编译时已知时,这绝对没问题。但是,我有一个场景,直到运行时才知道参数的数量,它们以数组的形式提供。
本质上我的问题与这个问题完全相同:How can I pass an array as parameters to a vararg function?
那里接受的答案告诉我,我的问题没有解决方案。
有没有办法绕过这个障碍。如果我无法使用PyObject_CallMethodObjArgs 解决问题,Python C API 中是否有替代函数可以满足我的需求?
例如,PyObject_Call 接受参数作为 Python 序列对象。是否可以使用此功能,或具有类似界面的功能?
【问题讨论】:
-
请提供一些minimal reproducible example。你的问题不清楚。你用什么编程语言编写代码?
-
我不认为编程语言是相关的。毕竟,这是一个 API,因此几乎适用于任何编程语言。
-
每种编程语言实现都有自己的calling convention,因此您使用的实现编程语言非常相关. SBCL 与 C 不同(即我的 Linux 上的 GCC,遵循 Linux ABI)
-
不,我认为你不明白我的问题。
-
问题出在你的最后。别担心。
标签: python