Cython - 概述

原文: http://docs.cython.org/en/latest/src/quickstart/overview.html

[Cython] 是一种编程语言,它使 Python 语言的 C 语言扩展与 Python 本身一样简单。它旨在成为 [Python] 语言的超集,为其提供高级,面向对象,功能和动态编程。它的主要功能是支持可选的静态类型声明作为语言的一部分。源代码被转换为优化的 C / C ++代码并编译为 Python 扩展模块。这允许非常快速的程序执行和与外部 C 库的紧密集成,同时保持 Python 语言众所周知的高程序员生产力。

主要的 Python 执行环境通常被称为 CPython,因为它是用 C 语言编写的。其他主要实现使用 Java(Jython [Jython] ),C#(IronPython [IronPython] )和 Python 本身(PyPy [PyPy] )。用 C 语言编写,CPython 有助于包装许多通过 C 语言接口的外部库。然而,在 C 中编写必要的粘合代码仍然是微不足道的,特别是对于像 Python 这样的高级语言更流利的程序员而不是像 C 这样的接近金属的语言。

最初基于着名的 Pyrex [Pyrex] ,Cython 项目通过源代码编译器将 Python 代码转换为等效的 C 代码来解决这个问题。此代码在 CPython 运行时环境中执行,但是以编译的 C 的速度执行,并且能够直接调用 C 库。同时,它保留了 Python 源代码的原始接口,这使得它可以直接从 Python 代码中使用。这些双重特性使 Cython 的两个主要用例成为可能:使用快速二进制模块扩展 CPython 解释器,以及将 Python 代码与外部 C 库连接。

虽然 Cython 可以编译(大多数)常规 Python 代码,但生成的 C 代码通常可以从 Python 和 C 类型的可选静态类型声明中获得主要(并且有时令人印象深刻)的速度改进。这些允许 Cython 将 C 语义分配给代码的一部分,并将它们转换为非常有效的 C 代码。因此,类型声明可用于两个目的:将代码段从动态 Python 语义转换为静态和快速 C 语义,还用于直接操作外部库中定义的类型。因此,Cython 将这两个世界合并为一种非常广泛适用的编程语言。

| [Cython] | G. Ewing,R。W. Bradshaw,S。Behnel,D。S. Seljebotn 等人,The Cython 编译器, https://cython.org/ 。 |

| [IronPython] | Jim Hugunin 等人, https://archive.codeplex.com/?p=IronPython 。 |

| [Jython] | J. Huginin,B。Warsaw,F.Bock,et al。,Jython:Python for the Java platform, http://www.jython.org 。 |

| [PyPy] | PyPy Group,PyPy:用 Python 编写的 Python 实现, https://pypy.org/ 。 |

| [派热克斯] | G. Ewing,Pyrex:Python 的 C-Extensions, https://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ |

| [Python] | G. van Rossum 等人,Python 编程语言, https://www.python.org/ 。 |