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