选择python解释器(3对2)

../_images/34484834733_5b80f65ab1_k_d.jpg

python的状态(3和2)

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

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

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

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

  3. 到2020年,python 2.7将只接收必要的安全更新。 6.

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

建议

注解

Python 3highly 优先于python 2。如果你发现自己 still 在今天的生产中使用python 2。如果你使用的是python 3,恭喜你你确实是一个很有品味的人。-肯尼斯·雷茨

我直截了当地说:

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

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

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

  • 已经构建的软件通常依赖于python 2.7。

  • 如果您正在编写一个新的开源python库,最好同时为python 2和3编写它。只有支持python 3建立一个新的库,你才希望被广泛采用,这是一种政治声明,并且会疏远你的许多用户。这不是问题-慢慢地,在接下来的三年里,情况会变少。

所以……三?

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

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

查看 Can I Use Python 3? 看看您所依赖的任何软件是否会阻止您采用python 3。

Further Reading

有可能 write code that works on Python 2.6, 2.7, and Python 3 .这取决于您所编写的软件类型,从简单到困难不等;如果您是一个初学者,那么还有更重要的事情要担心。请注意,python 2.6是生命的上游,所以您不应该尝试编写与2.6兼容的代码,除非您是专门为此付费的。

启动位置

当人们谈到 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

PythonNet

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

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

pythonnet支持从python 2.6到python 3.5。 4 5

1

http://pypy.org/compat.html

2

https://hg.python.org/jython/file/412a8f9445f7/NEWS

3

http://ironpython.codeplex.com/releases/view/81726

4

https://travis-ci.org/pythonnet/pythonnet

5

https://ci.appveyor.com/project/TonyRoberts/pythonnet-480xs

6

https://www.python.org/dev/peps/pep-0373/id2