Cython
與Python相容的程式語言 来自维基百科,自由的百科全书
Cython是将Python结合部分C语法的编程语言,与Python的主要差别在于语法中加入了静态类型,用户可以维持大部分的Python语法,而不需要大幅度调整主要的程序逻辑与算法。但由于会直接编译为二进制程序,所以性能较Python会有很大提升[5][6]。
![]() | 此条目可参照英语维基百科相应条目来扩充。 (2019年4月3日) |
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
cdef extern from "stdio.h":
int puts(const char*)
如果要使用C标准库中的函数,也可以这样写:
from libc.stdio cimport puts
#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
参考资料
参见
外部链接
Wikiwand - on
Seamless Wikipedia browsing. On steroids.