2011-03-21 59 views
7

由Cython生成的代码总是与从其生成的Python代码一样正确吗?Cython正确性

它可以帮助其他读者解决使用Cython静态类型声明和其他Cython特性(如果有的话),但我只关心通过将Python模块重命名为* .pyx来创建Cython文件的情况。

我只关心Cython涵盖的Python子集。

回答

10

一般来说,是的。当然有bugs(很多围绕扩展支持的Python子集,实际上使生成的C代码不正确的错误比较少见),还有一些必要的caveats(虽然似乎只有一个短列表中的项目转移Python语义)。

当您以纯Python模式添加静态类型时,无论它是编译为Cython还是以Python代码运行,都会有所不同。无符号整数想到(例如:在上面的一个链路提到的,-n将环绕如果n是无符号和range(-n, n)因此是空的),以及整数溢出(Python的促进int秒(C long多个)long S(abritary - 精确整数))。

+0

感谢您的回答。听取专家的意见最让人放心。你在Cython项目上工作吗?顺便说一句,我喜欢Cython项目;它为我提供了没有其他工具的功能。 – Brian 2011-03-23 21:31:01

+1

@Brian:不,我无法参与Cython;我只是另一位用户和文档的学生。如果你想问开发者,至少他们中的一些人参与['cython-users'邮件列表](http://groups.google.com/group/cython-users)。 – delnan 2011-03-23 21:53:49

+0

我是一名Cython开发人员,可以说Python的任何回归都会被认为是一个严重的错误,尽管应该牢记链接的警告(最明显的是使用明确的C类型整数)。 – robertwb 2015-08-11 00:13:55