1.2. 我应该选择哪一个 python 解释器(3 vs. 2)? | 基础信息 |《python 最佳实践指南 2018 2018》| python 技术论坛-江南app体育官方入口
python的状态(版本 3 和版本 2)
选择 python 解释器时,总会出现一个令人窘迫的问题:“我应该选择python 2 还是 python 3”? 答案比人们想象的要复杂的多。
大致的基本情况如下:
- 今天大多数生产应用程序都在使用 python 2.7。
- python 3 已经可以在今天的应用程序上生产部署。
- python 2.7 只会在 2020 年之前获得必要的安全更新[[6]]()。
- python 包含了 python 3 和 python 2。
建议
注意:使用 python 3 比 python 2 更 受青睐。如果直到现在你仍然在产品中使用 python 2 的话,可以考虑一下升级你的产品和基础设施。如果你使用的是 python 3,那么,恭喜 —— 你是个有优秀品位的人。 —— kenneth reitz
我开门见山:
- 在新的 python 应用中使用 python 3。
- 如果你第一次学习 python,熟悉下 python 2.7 会很有帮助,但还是没有学 python 3 的帮助大。
- 两个都学。它们都是 "python" 。
- 现存的软件大多数都依赖于 python 2.7。
- 如果你在写一个新的 python 库,最好同时支持 python 2 和 3 。 对于一个你希望被广泛支持的新库,只支持 python 3 其实是一个政治声明,它会挑拨许多你的用户。这其实也不是什么问题 —— 因为慢慢的,在接下来的三年里,情况会变得没那么糟糕。
那么考虑使用 3 么?
如果你正在选择一个 python 解释器使用,由于每个版本会带来新特性和改进的标准库模块,还有安全和漏洞修复,我推荐你使用最新的 python 3.x。
举一些只使用 python 2 的理由,例如先前存在的代码库,一个 python 2 独有的库,简单/熟悉,或者你对它喜爱有加并且深受它启发。这些都没有什么坏处。
查看 来看看是否有你所依赖的软件会阻止你采用 python 3。
有时候有可能需要你 。编写软件的种类决定了这一过程从繁琐到困难;另外如果你是初学者可以把这点先放一边,你有其他更重要的事情需要操心哈。还有注意 python 2.6 即将走向尽头,将会被开发者弃用,所以除非因为报酬,要不然你不用写出兼容 2.6 的代码。
实现
当人们谈及 python 时,他们通常指的是这门语言以及它的 cpython 实现。 python 实质上是一种语言规范,它可以用不同的方式来实现。
cpython
是 python 实现的标准,使用 c 语言编写。它将 python 代码编译为中间字节码,然后使用一个虚拟机去解释该字节码。 cpython 提供了对 python 包和 c 扩展模块的最高级别的兼容性。
如果你正在写开源的 python 代码,并且希望覆盖最广泛的受众,那么 cpython 是最好的选择。如果要使用依赖于 c 扩展的函数,那么 cpython 是你唯一的选择。
python 语言的所有版本都是用 c 实现的,因为 cpython 是实现的标准。
pypy
是一个用 rpython 实现的 python 解释器, rpython 是 python 语言的受限静态类型子集。该解释器的特性是拥有一个即时(jit)编译器以及支持多种后端(c,cli,jvm)。
pypy 的目标是在提高性能的同时,对 cpython 实现标准提供最大的兼容性。
假如你正在搜寻提升你 python 代码性能的法门,那么 pypy 值得一试。 在一套基准测试中,它目前 。
pypy 支持 python 2.7。pypy3 beta 版的目标是 python 3。
jython
是 python 的一种实现,它将 python 代码编译成 java 字节码,然后在 jvm(java 虚拟机)中运行。此外,它还能像使用 python 模块一样引入并使用任何 java 类。
如果你需要与现存的 java 库进行交互,或者有其他必要的理由来写运行在 jvm 上的 python 代码,那么 jython 是最佳选择。
jython 目前支持 python 2.7。
ironpython
是 python 的 .net 框架实现。它能同时使用 python 和 .net 框架的库,还能把 python 代码暴露给 .net 框架里的其他语言。
直接把 ironpython 整合进了 visual studio 开发环境,使得其成为 windows 开发者的理想选择。
ironpython 支持 python 2.7。
pythonnet
是一个为 python 本地安装和 .net 公共语言运行库(clr)提供无缝整合的软件包。这与 ironpython(见上方)采用的方式恰恰相反,与其说是竞争,不如说是补充。
pythonnet 在如 os x 和 linux 等非 windows 操作系统上启用本地 python 安装的时候,需要结合 mono 才能在 .net 框架里使用。它能毫无冲突的运行在包括 ironpython 里。
pythonnet 支持从 python 2.6 到 python 3.5。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 cc 协议,如果我们的工作有侵犯到您的权益,请及时联系江南app体育官方入口。