如果我在 Python 中有这样的函数:
def multiply(a, b)
return a * b
Run Code Online (Sandbox Code Playgroud)
PyObject_CallObject如果我有两个以上的参数,我如何调用它何时会给我一个错误?从 C++ 调用函数可能有更好的方法,但我对 Python/C API 很陌生
从文档:
PyObject* PyObject_CallObject(PyObject *callable_object, PyObject *args)返回值:新引用。
callable_object使用元组给出的参数args调用可调用的 Python 对象。如果不需要参数,则args可能是NULL。返回调用成功或NULL失败的结果。这相当于 Python 表达式callable_object(*args)。
换句话说:
tuple包含参数的参数来将多个参数传递给函数。因此,您必须构建一个tuple包含x和y(即(x, y)),然后将元组作为单个参数传递给PyObject_CallObject(multiply, the_tuple)this 将等效于multiply(x, y).PyObject_Call接受两个参数:位置参数的元组和关键字参数的字典。PyObject_CallFunction*有类似的函数,PyObject_CallObject但它们避免了必须创建元组并允许多个参数。| 归档时间: |
|
| 查看次数: |
4274 次 |
| 最近记录: |