我有一个Cython函数,我希望将序列化函数作为参数传递:
cdef my_serializer(serialization_func, data):
return serialization_func(data)
我要处理的所有序列化程序(msgpack,ujson)也是C / cython函数。声明serialization_func的正确方法是什么,以便Cython可以进行早期绑定?
答案 0 :(得分: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)