标签: python cython correctness
Cython生成的代码是否始终与从它生成的Python代码一样正确?
它可以帮助其他读者解决使用Cython静态类型声明和其他Cython功能(如果有的话),尽管我只对通过将Python模块重命名为* .pyx来创建Cython文件感兴趣。
我只关心Cython所涵盖的Python子集。
答案 0 :(得分:10)
一般来说,是的。当然有bugs(很多都围绕扩展支持的Python子集,但实际上使生成的C代码不正确的错误相对较少),并且有一些必要的caveats(虽然它似乎只是该短名单上的一个项目偏离了Python语义。)
当您在纯Python模式中添加静态类型时,在某些情况下,无论是编译为Cython还是作为Python代码运行,它都会有所不同。我想到了无符号整数(例如:如上面的一个链接中所提到的,如果-n是无符号且n因此为空),range(-n, n)将会回滚,以及整数溢出(Python提升) int s(C long s)到long s(abritary-precision integer))。
-n
n
range(-n, n)
int
long