首页 > 解决方案 > 如何将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_fc_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 函数指针?

标签: cython

解决方案


推荐阅读