cdef在Cython中列出my_list

Yux*_*ang 3 python cython

我对很多地方看到的以下代码感到困惑:

cdef list my_list
Run Code Online (Sandbox Code Playgroud)

我很困惑因为list不是C数据类型,而是Python数据类型.为什么人们会使用cdef而不是def呢?

我非常喜欢这个功能,因为有时候我需要在我的代码中使用list,而且在没有python列表的情况下将代码重构为C需要付出巨大的努力.我很困惑Cython正在做什么,当a list定义cdef并且让所有方法暴露给我们时.

我试图搜索文件,但没有运气.任何帮助,将不胜感激!

Vee*_*rac 6

cdefPython数据类型只允许Cython采用一些(小)快捷方式并进行类型检查.

这不会导致代码明显加快,因为Python开销仍然存在.对于方便的数据类型,您可能希望使用numpy.arraycpython.array.array键入内存视图.