将Cython函数传递给另一个Cython函数

3
我有一个Cython函数,我想把一个序列化函数作为参数传入:
cdef my_serializer(serialization_func, data):
    return serialization_func(data)

我将要处理的所有序列化程序(如msgpack、ujson)都是C/Cython函数。声明serialization_func的正确方式是什么,以便Cython可以进行早期绑定?


如果serialization_func是一个函数,为什么要调用它的方法来进行序列化呢? - user2357112
你是完全正确的,那个dumps()不应该在那里。已编辑。 - Thomas Johnson
1个回答

3

这个代码能正常运行且易于阅读:

ctypedef void (*SERIALIZATION_FUNC)(char *data)

cdef void my_serializer(SERIALIZATION_FUNC func, char *data):
    func(data)

如果您真的想使用Python对象作为参数和返回值,则可以采用以下方法:

ctypedef object (*SERIALIZATION_FUNC)(object data)

cdef my_serializer(SERIALIZATION_FUNC func, data):
    return func(data)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接