Cython - 概览

[Cython] 是使为 Python 语言编写 C 扩展如 Python 本身一样容易的编程语言。它旨在变为超集对于 [Python] 语言,赋予其高级、面向对象、函数式及动态编程。它的主要特征:支持可选静态类型声明作为语言的一部分。源代码被翻译成优化 C/C++ 代码并编译成 Python 扩展模块。这允许非常快速的执行程序和紧密集成外部 C 库,且保持 Python 语言众所周知的高程序员生产力。

首要 Python 执行环境常被称为 CPython,因为它是以 C 编写的。其他主要实现使用 Java (Jython [Jython] ), C# (IronPython [IronPython] ) 和 Python 本身 (PyPy [PyPy] )。CPython 以 C 编写,有助于包裹很多透过 C 语言接口的外部库。不管怎样,以 C 编写必要胶水代码仍然很不平凡,尤其对于更熟习像 Python 高级语言而不是像 C 接近裸机语言的程序员而言。

最初基于著名的 Pyrex [Pyrex] ,Cython 工程通过将 Python 代码翻译成等效 C 代码的源代码编译器来解决此问题。这种代码在 CPython 运行时环境中执行,但有编译 C 的速度和直接调用 C 库的能力。同时,保持 Python 源代码的原始接口,使它可直接用于 Python 代码。这 2 方面特色使 Cython 支持 2 主要用例:采用快速二进制模块扩展 CPython 解释器,和接口 Python 代码与外部 C 库。

虽然 Cython 可以编译 (大多数) 常规 Python 代码,但生成的 C 代码通常是从 Python 和 C 类型的可选静态类型声明获得主要 (有时令人印象深刻) 速度改进。这些允许 Cython 为部分代码赋值 C 语义,并将它们翻译成很高效的 C 代码。因此,类型声明可用于 2 目的:用于将代码区间从动态 Python 语义移入静态且快速的 C 语义,但也用于直接操纵由外部库定义的类型。因此,Cython 将这 2 世界合并成应用非常广泛的编程语言。

[Cython] G. Ewing、R. W. Bradshaw、S. Behnel、D. S. Seljebotn 等人,Cython 编译器, http://cython.org .
[IronPython] Jim Hugunin 等人, https://archive.codeplex.com/?p=IronPython .
[Jython] J. Huginin、B. Warsaw、F. Bock 等人,Jython:用于 Java 平台的 Python, http://www.jython.org .
[PyPy] PyPy 组,PyPy:以 Python 编写 Python 实现, http://pypy.org .
[Pyrex] G. Ewing,Pyrex:用于 Python 的 C 扩展, http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
[Python] G. van Rossum 等人,Python 编程语言, https://www.python.org/ .

上一话题

快速入门

下一话题

安装 Cython

本页