2011-03-21 40 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