[.com快速翻译]Python于1991年由GuidovanRossum创建,如今已成为发展最快、使用最广泛的编程语言之一。可广泛应用于:Web应用、桌面开发、机器学习、人工智能、数据分析、数据可视化等领域。值得注意的是,近年来,随着Python生态的不断发展,业界涌现了很多代码库、框架和编译器,可以用来加速Python,克服其应用限制,甚至将Python与其他编程语言(如:Java、C、C++、JavaScript等)一起使用。本文将为大家介绍十款优秀的编译器,可以用来将Python代码按需编译成指定的输出格式,充分释放Python代码的潜能。总的来说,CPython是目前官方提供的,使用最广泛的。当我们从官网下载使用Python时,CPython是默认的编译处理器。当然,在不同的领域和需求场景下,开发者也会使用Jython、Brython、PyPy、Skulpt、IronPython、PyJs、Nuitka、WinPython等编译器。CPython是Python的原始编译器,CPython是Python语言规范的参考实现。因此,它往往是第一个获得Python语言所有最新和最强大功能的人。顾名思义,它是用纯C语言编写的。当然,你不仅可以从Python代码中调用C源代码的函数,还可以直接在Python中使用大量已有的C代码库。值得注意的是,由于CPython是在运行时解释字节码(bytecode),所以它在每个进程上都使用了一个全局解释器锁(globalinterpreterlock,GIL)来保证同一时刻,只有一个线程在解释字节码。当我们调用CPython时,写在.py文件中的源代码首先会自动编译成包含Python字节码的.pyc文件,然后通过PVM(Python虚拟机)进行解释。可见CPython其实是编译器和解释器的结合体,不像C语言那样可以直接用CPU指令将源代码编译成二进制机器码。对于所有学生和初学者,CPython可以成为您Python编程之旅的第一步。当然,他们也可以使用其他编译器,让不同的编程语言与Python混合使用,以实现更具体的开发需求。比如下面会提到的Jython,它会混合Java和Python代码,使用现有的Java和Python库,将代码转换成Java字节码,在JVM上运行Python。作为JavaScript的“替代品”,Brython可用于在浏览器中运行包含Python3脚本的Web应用程序。换句话说,开发人员只需要在那些运行Python脚本的网页上包含brython.js即可。这里的brython.js是一个引擎,可以找到页面上的Python脚本,通过Python代码执行各种JavaScript操作。Python上面的代码片段表明,在包含brython.js之后,你可以使用脚本类型text/python添加Python脚本,通过Python代码像JavaScript一样操作DOM。同时,还可以进行各种Ajax调用,访问本地文件系统。当然,你也可以在基于Brython的Python脚本中包含各种现有的JavaScript库和框架,包括:Highcharts、vue.js和three.js等。PyPyPython虽然CPython是使用最广泛的Python编译器,但它不是最快的。支持Python2和Python3核心语言规范的PyPy可以替代默认的Python实现。在CPython中,字节码是在运行时解释的,因此性能会有所下降。PyPy使用即时(JIT)编译的概念。它在代码执行前直接编译成机器码,因此其执行速度提高了近4倍。值得注意的是,当Python代码需要进行大量耗时处理时,PyPy的速度优势会更加明显。对于较短的进程,JIT编译器本身可能会消耗更多时间并抵消整体速度优势。第二个最常用的Python实现是Jython或JPython,它最初被称为JPython。它通过Python语言实现Java虚拟机。开发者不仅可以将已有的Java包和代码库导入到自己的Python程序中,还可以将Python脚本嵌入到Java程序中。无论哪种方式,Jython编译器都会将整体代码与Java和Python结合起来,编译成可以在JVM上运行的字节码。正是因为它运行在JVM上,所以您可以在几乎所有平台上创建Jython项目,例如:Windows、Linux、macOS、FreeBSD和Solaris。CythonCython不同于CPython,它更像是一个超集,允许开发者在代码中结合C和Python,从而生成C语言代码类型的输出,供后续任何C/C++编译器编译。可以说Cython兼顾了C语言的速度和Python的灵活性,可以作为用Python编写C扩展的强大工具。以下是关于Cython的一些重要注意事项:开发人员可以在Python代码中使用静态类型声明可以调试使用用Cython、Python和C编写的混合源代码可以使用现有的库(例如:NumPy、SciPy和CPython生态系统))构建高性能应用如果使用CPython可以为您提供解释字节码的速度,那么使用Cython可以为您提供预编译为机器本机代码的速度。SkulptSkulpt是GrahamScott创建的一个实验项目,其流行度增长非常快。作为浏览器中的Python实现,Skulpt的主要目的是提供一个优秀的在线Python编译器。当然,通过将Skulpt包含在Web应用引擎中,也可以让开发者更容易编写用于前端的Python脚本。值得一提的是,Skulpt会先将Python代码转换为JavaScript,然后在浏览器中执行相应的代码。Nuitka由KayHayen开发和维护,是另一种用Python编写的编译器。虽然仍在进行中,但它在默认CPython实现的基础上进行了运行时改进。目前,Nuitka的工作方式是将Python代码编译为C语言代码,并利用libPython进行最终执行。当然,Nuitka的最终计划是用原来的纯C语言数据类型代替,而不必借用libpython。请注意,Nuitka在Apache许可下免费提供,并且可以配置为在Linux、Windows、macOS和其他平台上使用。IronPython于2006年首次发布,是.NET框架的Python实现。它支持.NETcore和.NETStandard,可以运行在Windows、macOS和Linux平台上。IronPython之于.NETFramework就像Jython之于Java。通过IronPython,开发者可以使用所有Python库、.NETFramework以及.NET支持的所有语言(例如C#)。正因为IronPython是用C#编写的,如果你有.NET背景,你可以使用Python扩展工具轻松地为Python设置VSCode。当然,您可以在Apache许可下免费使用编译器。PyJSPyJS是另一种完全使用Python而不是JavaScript或HTML开发Web应用程序的编译工具。在幕后,PyJS在使用内置的Ajax框架之前将Python代码编译为JavaScript。同时,PyJS自带了桌面版,可以在桌面上运行开发的应用程序对应的网页版。WinPythonWinPython是Python的“即用型”发行版。换句话说,用户无需任何安装即可在WindowsPC上运行它。作为Python的另一种实现方式,WinPython编译器不仅带来了Python的执行环境,还包含了各种Python库,如:Scipy、Numpy、Pandas等。WinPython既是数据科学家的全功能科学环境,也是学生和初学者的便捷工具。TranscryptTranscrypt更像是一个Python到JavaScript的转换器。也就是说,您可以使用Transcrypt将您自己的Python代码转换为JavaScript。据此,您可以将编译后的代码用作Web应用程序或Node.js服务器中的服务器端应用程序。通常,Transcrypt生成可读的JavaScript,您可以使用源映射和Python源代码对其进行调试。此外,您还可以从该工具中获得一个压缩器、一个静态类型验证器和一个带有Typescript的linter。总结上面介绍的十种编译器中的大多数都可以使开发人员在他们的项目中混合或匹配多种语言。当然,你也可以从以下几个方面来选择合适的Python编译器:你需要利用其他编程语言的现有代码库。缺乏Java、JavaScript、C甚至Python的某一方面的技能。需要加快Python运行时的执行速度。原标题:The10BestPythonCompilersforDevelopers,作者:SophiaRodriguez
