cython - 如何将python函数转换为C函数指针?
问题描述
假设我有代码片段:
ctypedef double (*scalar_func)(double)
cdef double c_func(scalar_func f):
return f(1.0)
def call_from_py(py_f):
cdef scalar_func f = py_f
return c_func(f)
在这里,我想将 Python 函数传递py_f
给c_func
. 但是,这会产生错误
Error compiling Cython file:
------------------------------------------------------------
...
cdef double c_func(scalar_func f):
return f(1.0)
def call_from_py(py_f):
cdef scalar_func f = py_f
^
------------------------------------------------------------
/Users/david/.ipython/cython/_cython_magic_39903ba379ce438d042b67efa2d500fe.pyx:9:22: Cannot convert Python object to 'scalar_func'
如何将 Python 函数传递给c_func
,即如何将 Python 函数转换为 C 函数指针?