Cython

Cython是结合了Python和C的语法的一种语言，可以简单的认为就是给Python加上了静态类型后的语法，使用者可以維持大部分的Python語法，而不需要大幅度調整主要的程式邏輯與演算法。但由于会直接编译为二进制程序，所以性能较Python会有很大提升。

Cython典型的運用于编写Python扩展模块，以取得較高的執行效能。Cython將原始碼轉譯成C或C++語法後，自動包裝上函式呼叫界面生成.pyd（或 .so ，因作業系統而異）後綴的二進位檔，即可當成普通的Python函式庫。其性能一般遜於原生的C/C++函式庫，但由於Cython語法的易用性可以縮短開發時間。Cython也可以用於將C/C++程式碼封裝為Python函式庫。

Cython 文件的擴展名為 .pyx。 在最基本的情況下，Cython 代碼看起來與 Python 代碼完全一樣。 然而，雖然標準 Python 是動態類型的，但在 Cython 中，可以選擇提供類型，從而提高性能，並允許在可能的情況下將循環轉換為 C 循環。

語法

定義變數 
可以使用關鍵字cdef定義變數
cdef int a = 1

定義函數 
可以使用關鍵字def、cdef、或cpdef定義函數。
cdef int f(int x):
    return x + 1
使用關鍵字cdef定義的函數，會被Cython編譯成C語言，所以速度較快，但無法被Python使用；只有使用def或cpdef定義的函數可以在Python中使用。

定義結構 
cdef struct x:
  int y
  float z

使用 C 標頭檔 
cdef extern from "stdio.h":
    int puts(const char*)
如果要使用C標準庫中的函數，也可以這樣寫：
from libc.stdio cimport puts

使用 C++ 標頭檔 
#distutils: language = c++
cdef extern from "<vector>" namespace "std":
    cdef cppclass vector[T]:
        vector()
        void push_back(T&)
        T& operator[](int)
        T& at(int)
或：
#distutils: language = c++
from libcpp.vector cimport vector

編譯 

cythonize -3 -i example.pyx

參考資料

參見 
 PyPy
 Numba

外部連結 
 
 

Python
使用Apache许可证的软件