Cython
Cython是將Python結合部分C语法的程式語言,與Python的主要差別在於語法中加入了靜態類型,使用者可以維持大部分的Python語法,而不需要大幅度調整主要的程式邏輯與演算法。但由于会直接编译为二进制程序,所以性能较Python会有很大提升[5][6]。 Cython典型的運用于编写Python扩展模块,以取得較高的執行效能。Cython將原始碼轉譯成C或C++語法後,自動包裝上函式呼叫界面生成.pyd(或.so,因作業系統而異)後綴的二進位檔,即可當成普通的Python函式庫。其性能一般遜於原生的C/C++函式庫,但由於Cython語法的易用性可以縮短開發時間。Cython也可以用於將C/C++程式碼封裝為Python函式庫。 Cython文件的擴展名為.pyx。在最基本的情況下,Cython代码看起來與Python代码完全一樣。 然而,雖然標準Python是動態類型的,但在Cython中,可以選擇提供類型,從而提高性能,並允許在可能的情況下將循環轉換為C循環[7]。 語法定義變數可以使用關鍵字cdef定義變數[8] cdef int a = 1
定義函數可以使用關鍵字def、cdef、或cpdef定義函數。 cdef int f(int x):
return x + 1
使用關鍵字cdef定義的函數,會被Cython編譯成C語言,所以速度較快,但無法被Python使用;只有使用def或cpdef定義的函數可以在Python中使用[9]。 定義結構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
參考資料
參見外部連結 |
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia