2

我有一个 Cython 函数,我想传入一个序列化函数作为参数:

cdef my_serializer(serialization_func, data):
    return serialization_func(data)

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

4

1 回答 1

2

这有效并且具有合理的可读性:

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)
于 2013-08-21T02:56:42.127 回答