我对以下在很多地方看到的代码感到困惑:
cdef list my_list
我很困惑,因为list不是C数据类型,而是Python数据类型。为什么人们会使用cdef
代替def
?
我非常喜欢这个功能,因为有时候我需要在我的代码中使用list,而且在没有python列表的情况下将代码重构为C需要付出巨大的努力。当list
被cdef
定义并且所有方法都暴露给我们时,我对Cython正在做什么以及Cython正在做什么感到困惑。
我试图搜索文件,但没有运气。任何帮助将不胜感激!
答案 0 :(得分:6)
cdef
Python数据类型只允许Cython采用一些(小)快捷方式并进行类型检查。
这不会导致代码明显加快,因为Python开销仍然存在。对于方便的数据类型,您希望使用numpy.array
或cpython.array.array
键入内存视图。