1.Cython
源于Pyrex,Cython项目借助于源代码编译器将Python代码转换为同等的C语言,这是在CPython(主Python运行环境主要是CPython,由C语言编写而成。)运行环境下完成的,但 具有C语言的编译速度及直接调用C库的能力;同时它也保留了Python源代码的接口,这使得Cython可直接被Python代码使用。
以上可以推出Cython的两个用途:(1)以快速的二进制模块扩展CPython解释器;(2)为Python提供使用C扩展库的接口。
那么Cython中是如何将Python代码转换为C语言的呢?
其中一点是Cython分配C语义给部分代码,使之可以翻译为高效的C代码。Cython中的类型声明用于两个目的:将代码段从动态的Python语义移动到静态且快速的C语义;直接操作外部库定义的类型。
2.Python与C语言在%上的区别
在Python中,%为取模,而C中,%为取余;
取模与取余的公式相同:例如求解a%b,令c=a//b(a对b取整,即求整数商),a%b=a-c*b。
不同在于取整之时,取模运算中取整是向负无穷取整,而取余运算中取整是向0取整。
故同样对于-1%5的运算:
Python中,-1//5=-1(向负无穷),而C中int/int的取整运算为-1/5=0(向0);
故Python的-1%5输出为4,C的-1%5输出为-1.
而对于Cython中,%与C语言一致?(我也不明白)
3.Cython中扩展类型的特殊方法
具体可参考http://docs.cython.org/en/latest/src/userguide/special_methods.html#special-me

Cython是一个将Python代码转换为C语言的编译器,提供C的编译速度并允许直接调用C库。在Cython中,%操作符与C语言保持一致。Cython的特殊方法仅适用于cdef class,且__cinit__和__init__分别进行C级别和Python级别的初始化。def, cdef和cpdef用于定义不同类型的函数,其中cdef和cpdef可提高性能,但cdef函数不能直接被Python调用,而cpdef兼顾Python和C调用但性能稍降。"
132791189,11934545,Linux基础操作指南:文件系统与常用命令,"['Linux', '运维']
最低0.47元/天 解锁文章
62





