Cython
外观

![]() | 此條目可参照英語維基百科相應條目来扩充。 (2019年4月3日) |
File:Cython-logo.svg | |
開發者 | Robert Bradshaw, Stefan Behnel, et al. |
---|---|
首次发布 | 2007年7月28日[1] |
当前版本 |
|
源代码库 | |
编程语言 | Python, C |
类型 | 编程语言 |
许可协议 | Apache许可证2.0 |
网站 | cython |
Cython是结合了Python和C的语法的一种语言,可以简单的认为就是给Python加上了静态类型后的语法,使用者可以維持大部分的Python語法,而不需要大幅度調整主要的程式邏輯與演算法。但由于会直接编译为二进制程序,所以性能较Python会有很大提升。[3][4]
Cython被大量運用在CPython函式庫的撰寫,以取得較高的執行效能。Cython將Pyrex代碼(副檔名: .pyx , .pxd , .pxi [5])轉譯成C或C++語法後,自動包裝上函式呼叫界面生成.pyd [6](或 .so ,因不同作業系統而異)後綴的二進位檔,即可當成普通的Python函式庫。其性能一般遜於原生的C/C++函式庫,但由於CPython語法的易用性可以縮短開發時間。Cython也可以用於編譯以C/C++為CPython撰寫的函式庫。
目前Cython可以在Windows、MacOS與Linux上使用。
語法
定義變數
可以使用關鍵字cdef定義變數
cdef int a = 1
定義函數
可以使用關鍵字def、cdef、或cpdef定義函數。
cdef int f(int x):
return x + 1
使用關鍵字cdef定義的函數,會被Cython編譯成C語言的函數,所以速度較快,但無法被Python使用;只有使用def或cpdef定義的函數可以在Python中使用。
使用 C 標頭檔
cdef extern from "stdio.h":
int puts(const char*)
如果要使用C標準庫中的函數,也可以這樣寫:
from libc.stdio cimport puts
編譯
cythonize -3 -i example.pyx
參考資料
- ^ Behnel, Stefan. The Cython Compiler for C-Extensions in Python. EuroPython (28 July 2007: official Cython launch). Vilnius/Lietuva. 2008 [2020-09-12]. (原始内容存档于2016-10-22).
- ^ Release 3.1.2. 2025年6月9日 [2025年6月15日].
- ^ Cython - an overview — Cython 0.19.1 documentation. Docs.cython.org. [2013-07-21]. (原始内容存档于2013-08-11).
- ^ Smith, Kurt. Cython: A Guide for Python Programmers. O'Reilly Media. 2015 [2019-05-07]. ISBN 978-1-4919-0155-7. (原始内容存档于2019-05-08).
- ^ Cython支援的檔案副檔名格式 – 檔案詞典. [2020-11-23] (美国英语).
- ^ 檔案副檔名 PYD : Python Dynamic Module 是什麼? 如何開啟? – 檔案詞典. [2020-11-23] (美国英语).