Python2 和 Python3的区别
Python 2.x is legacy, Python 3.x is the present and future of the language.
2是旧版,3才是该语言的现在和未来。所以我们可以得出初步结论,如果你是一个初学者,正准备开始学Python,还是从3入手吧。
Python 3.0于2008年发布。最终的2.x版本2.7版本是在2010年中期发布的,并有一个扩展支持这个报废版本的声明。之后,2.x分支机构将看不到新的主要版本。 3.x正在积极发展,已经有超过五年的稳定版本,包括2012年的3.3版,2014年的3.4个,2015年的3.5个,2016年的3.6个。这意味着例如所有最近的标准库改进仅在Python 3.x中可用。
Guido van Rossum(Python语言的原始创建者)决定正确地清理Python 2.x,而不考虑向后兼容性,而不是2.x范围内的新版本。最大的改进是更好的Unicode支持(默认情况下,所有文本字符串都是Unicode)以及saner字节/ Unicode分离。
此外,核心语言的几个方面(如打印和执行语句,使用分区的整数)已被调整为使新手更容易学习,并与其他语言更加一致,并且旧的邮件已被删除(例如,所有类现在都是新样式的,“range()”返回一个高效的内存可迭代,而不是像2.x中的列表)。
Python 3.0文档的新功能可以很好地概述主要的语言变化以及与现有Python 2.x代码不兼容的可能来源。 Nick Coghlan(其中一个CPython核心开发人员)也创建了一个相对较广泛的关于转换的FAQ。
然而,更广泛的Python生态系统多年来已经积累了大量优质的软件。 在3.x中打破向后兼容性的缺点是,其中一些软件(特别是公司内部的软件)仍然不能在3.x上运行。
我应该使用哪个版本?
您应该使用哪个版本主要取决于您要完成的任务。
如果您可以使用Python 3.x完成所需的任务,那么很棒!有一些细微的缺点,如图书馆支持情况稍差一点,事实上,一些目前的Linux发行版和Mac仍然使用2.x作为默认值,但作为一种语言,Python 3.x绝对是成熟的,可以使用。只要Python 3.x安装在用户的计算机上(这应该很简单,因为很多阅读这篇文章的人只能为自己或者他们所控制的环境开发某些东西),而你正在写的东西,你不知道Python需要2.x模块,这是一个很好的选择。此外,大多数Linux发行版都已经安装了Python 3.x,几乎所有的Linux发行版都可用于最终用户。一个有点痛苦的例外是Red Hat Enterprise Linux,通过版本7:Python 3确实存在于EPEL存储库中,但有些用户可能不被公司策略允许从这些附加位置安装任何内容 - 请参见下面的“控件”。一些发行版正在淘汰Python 2作为预装的default.2特别是,向新程序员介绍Python的教师应该首先考虑教Python 3,然后再引入Python 2中的差异(如果需要),因为Python 3消除了许多怪癖,这些怪癖可能会不必要地跳过开始的程序员尝试学习Python 2。
但是,有一些关键问题可能需要您使用Python 2而不是Python 3。
首先,如果要部署到您无法控制的环境中,那么可能需要使用特定版本,而不是允许您从可用版本中自由选择。
其次,如果要使用尚未具有与Python 3兼容的发行版本的特定第三方软件包或实用程序,并且移植该软件包是一项非常简单的任务,您可以选择使用Python 2以保留对该包的访问。
Python 3已经广泛地支持创建GUI应用程序,Tkinter在标准库中。 Python 3已经得到PyQt的支持,几乎从Python 3发行的那一天开始;PySide在2011年添加了Python 3支持。可以使用支持Python 3的PyGObject创建GTK + GUI,并且是PyGtk的后继。
许多其他主要软件包已被移植到Python 3,包括:
- NumPy和SciPy(用于数字处理和科学计算)
- Django,Flask,CherryPy和Pyramid(网站)
- PIL(图像处理模块)被其支持Python 3的Pillow所取代。
- cx_Freeze(用于打包应用程序及其依赖项)
- py2exe(为Windows用户打包应用程序)
- OpenCV 3(一个开源计算机视觉和机器学习库)现在支持版本3.0和更高版本的Python 3。
- Requests(一个人类的HTTP库)
- lxml(一个功能强大的Pythonic XML处理库,将libxml2 / libxslt与ElementTree API相结合)
- BeautifulSoup4(用于解析HTML和XML的屏幕抓取库)
- 用于交互式计算的IPython/Jupyter项目完全支持Python 3。
- 其他!
尽管 官方python文档和 教程已经完全更新为Python 3,但仍然有很多文档(包括示例)在Web上和使用Python 2的参考书籍,尽管更多的是一直在更新。这可能需要一些调整,以使调整适应Python 3的工作。
有些人只是不想使用Python 3.x,这是它们的特权。但是,他们毕竟是 少数。
值得注意的是,如果您希望使用Python的替代实现,例如 IronPython, Jython或 Pyston(或Python平台或编译器实现的较长列表之一),Python 3的支持仍然相对较少。如果您有兴趣选择与其他系统 集成的话,可能会对您有影响。