我有一个 Cython 函数,我想传入一个序列化函数作为参数:
cdef my_serializer(serialization_func, data):
return serialization_func(data)
我将要处理的所有序列化程序(msgpack、ujson)也是 C/cython 函数。声明 serialization_func 以便 Cython 可以进行早期绑定的正确方法是什么?
我有一个 Cython 函数,我想传入一个序列化函数作为参数:
cdef my_serializer(serialization_func, data):
return serialization_func(data)
我将要处理的所有序列化程序(msgpack、ujson)也是 C/cython 函数。声明 serialization_func 以便 Cython 可以进行早期绑定的正确方法是什么?
这有效并且具有合理的可读性:
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)