选择python解释器(3对2)

../_images/34484834733_5b80f65ab1_k_d.jpg

Python的状态(3和2)

在选择Python解释器时,总会有一个迫在眉睫的问题:“我应该选择Python2还是Python3?”答案比人们想象的要微妙一点。

事物状态的基本要点如下:

  1. 现在大多数生产应用程序都使用python3。

  2. Python 3现在已经为应用程序的生产部署做好了准备。

  3. Python2在2020年1月1日结束了它的生命 [6].

  4. 品牌名称“python”封装了python 3和python 2。

建议

备注

使用 ** Python 3** 是 高度 推荐使用Python 2。如果您发现自己需要升级应用程序和基础架构,请考虑升级 静止的 今天在生产中使用Python2。如果您正在使用Python 3,恭喜您--您确实是一个品味极佳的人。- 肯尼思·赖茨(Kenneth Reitz)

我直截了当地说:

  • 将Python 3用于新的Python应用程序。

  • 如果您是第一次学习Python,那么熟悉Python2.7将非常有用,但不会比学习Python3更有用。

  • 两者兼得。它们都是“ Python ”。

所以……3?

如果您选择使用Python解释器,我建议您使用最新的python 3.x,因为每个版本都带来了新的和改进的标准库模块、安全性和错误修复。

鉴于此,只有当您有充分的理由(如预先存在的代码库、python 2专用库、简单性/熟悉性)时,才使用python2,当然,您绝对喜欢并受到python2的启发。没什么害处。

Further Reading

有可能 write code that works on Python 2.6, 2.7, and Python 3 . 这从琐碎到困难,取决于您正在编写的软件类型;如果您是初学者,还有更重要的事情要担心。

启动位置

当人们谈到 Python 它们通常不仅指语言,还指cpython实现。 Python 实际上是一种语言的规范,可以用许多不同的方式实现。

CPython

CPython 是用C编写的python的引用实现。它将python代码编译为中间字节码,然后由虚拟机进行解释。c python提供了与Python包和C扩展模块的最高级别的兼容性。

如果您正在编写开源的Python代码,并且希望接触到尽可能广泛的受众,那么以CPython为目标是最好的。要使用依赖C扩展功能的包,CPython是您唯一的实现选项。

所有的Python语言版本都是用C实现的,因为c python是引用实现。

PyPy

PyPy 是在名为rpython的Python语言的受限静态类型子集中实现的Python解释器。解释器具有实时编译器,并支持多个后端(C、CLI、JVM)。

Pypy的目标是在提高性能的同时最大限度地与参考CPython实现兼容。

如果您希望提高Python代码的性能,那么值得让Pypy尝试一下。在一系列基准上,它目前 over 5 times faster than CPython .

PyPy支持python 2.7。PYPY3型 [1], 在beta中发布,目标是python 3。

Jython公司

Jython 是一个Python实现,它将Python代码编译成Java字节码,然后由JVM(Java虚拟机)执行。此外,它还可以导入和使用任何像Python模块那样的Java类。

如果需要与现有的Java代码库进行接口,或者需要为JVM编写Python代码,那么Jython是最好的选择。

Jython目前最多支持python 2.7。 [2]

IronPython

IronPython 是.NET框架的python实现。它可以同时使用python和.NET框架库,也可以将python代码公开给.NET框架中的其他语言。

Python Tools for Visual Studio 将Ironpython直接集成到Visual Studio开发环境中,使其成为Windows开发人员的理想选择。

Ironpython支持python 2.7。 [3] 铁蟒3 [4] 正在开发中,但到2020年9月还没有准备好投入使用。

PythonNet

Python for .NET 是一个包,它提供了本地安装的python安装与.NET公共语言运行库(clr)的近乎无缝的集成。这是与Ironpython(见上文)所采用的方法相反的方法,对它而言,它比与之竞争更具互补性。

与mono结合使用,python net使非Windows操作系统(如OS X和Linux)上的本机python安装能够在.NET框架内运行。它可以在没有冲突的情况下运行在Ironpython之外。

Pythonnet与python2.7和3.5-3.8兼容。 [5]