如果我在Python中有这样的函数:
def multiply(a, b)
return a * b
如果我有两个以上的参数,如果它会给我一个错误,我如何调用PyObject_CallObject
?可能有更好的方法从C ++调用函数,但我是Python / C API的新手
答案 0 :(得分:4)
<强>
PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)
强>返回值:新参考。
调用可调用的Python对象
callable_object
,并给出参数 通过元组args
。如果不需要参数,则args
可能是NULL
。 返回成功调用的结果,或失败时NULL
。 这是 相当于Python表达式callable_object(*args)
。
换句话说:
tuple
来向函数传递多个参数。因此,您必须构建包含tuple
和x
(y
)的(x, y)
,然后将元组作为单个参数传递给PyObject_CallObject(multiply, the_tuple)
将等同于multiply(x, y)
。PyObject_Call
,它带有两个参数:位置参数元组和关键字参数字典。PyObject_CallFunction*
函数与PyObject_CallObject
类似,但它们不必创建元组并允许多个参数。