python2xyupython3x区别总结Word下载.docx
- 文档编号:13162118
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:7
- 大小:20.38KB
python2xyupython3x区别总结Word下载.docx
《python2xyupython3x区别总结Word下载.docx》由会员分享,可在线阅读,更多相关《python2xyupython3x区别总结Word下载.docx(7页珍藏版)》请在冰豆网上搜索。
用户
登录
我应该使用Python2或Python3进行开发活动吗?
内容
有什么区别?
我应该使用哪个版本?
但是我不想避免2.x?
这是一个有很多错误的古老语言,它花了一个主要版本来让他们出来。
我想使用Python3,但是我只想使用这个Python2.x的这个小型库。
我真的需要恢复使用Python2或放弃使用该库吗?
我决定在3.x中写一些东西,但是现在有人想要使用只有2.x的东西。
我该怎么办?
在通用代码库中支持Python2和Python3
可能有助于在Python2和Python3之间进行选择的其他资源
脚注
简短版本:
Python2.x是旧版,Python3.x是该语言的现在和未来
Python3.0于2008年发布。
最终的2.x版本2.7版本在2010年年中发布,并声明对这一生命周期版本进行了扩展支持。
之后,2.x分支机构将看不到新的主要版本。
3.x正在积极发展,已经有超过五年的稳定版本,包括2012年的3.3版,2014年的3.4个,2015年的3.5个,2016年的3.6个。
这意味着例如所有最近的标准库改进仅在Python3.x中可用。
GuidovanRossum(Python语言的原始创建者)决定正确地清理Python2.x,而不用考虑向后兼容性,而不是2.x范围内的新版本。
最大的改进是更好的Unicode支持(默认情况下,所有文本字符串都是Unicode)以及saner字节/Unicode分隔。
此外,核心语言的几个方面(例如打印和执行语句,使用分区的整数)已被调整为使新手更容易学习,并与其他语言更加一致,而旧的拼图已被删除(例如,所有类现在都是新样式的,“range()”返回一个高效的内存可迭代,而不是像2.x中的列表)。
在什么新的Python3.0文档提供的主要语言的变化,并与现有的Python2.x的代码不兼容的可能的来源一个很好的概述。
NickCoghlan(CPython核心开发人员之一)也创建了一个相对较广泛的关于转换的FAQ。
然而,更广泛的Python生态系统多年来已经积累了大量优质的软件。
3.x中的反向兼容性的缺点是,其中一些软件(特别是公司内部的软件)仍然不能在3.x上运行。
您应该使用哪个版本主要取决于您想要完成的任务。
如果您可以使用Python3.x完成所需的任务,那么很棒!
有一些小的缺点,如非常略差库支持1,事实上,目前一些Linux发行版和Mac电脑仍然使用2.X的默认(尽管Python3个中附带了很多的),但作为一个Python语言3.x肯定准备好了。
只要Python3.x安装在用户的计算机上(这应该是简单的,因为很多阅读这个人的人只能为自己或他们控制的环境开发某些东西),而你正在写的东西,你不知道需要Python2.x模块,这是一个很好的选择。
此外,大多数Linux发行版都已经安装了Python3.x,并且它们都可用于最终用户。
有些正在淘汰Python2作为预装的默认值。
2
特别是,向新程序员介绍Python的教师应该首先考虑教Python3,然后再引入Python2中的差异(如果需要的话),因为Python3消除了许多怪癖,这些怪癖可能会使开始的程序员试图学习Python2。
但是,有一些关键问题可能需要您使用Python2而不是Python3。
首先,如果您部署到您无法控制的环境中,那么可能会强加一个特定版本,而不是允许您从可用版本中自由选择。
其次,如果要使用尚未具有与Python3兼容的发布版本的特定第三方软件包或实用程序,并且移植该软件包是一项非常重要的任务,您可以选择按顺序使用Python2以保留对该包的访问。
Python3已经广泛地支持创建GUI应用程序,Tkinter在标准库中。
Python3已经被PyQt支持,几乎从Python3发行的那一天开始,PySide在2011年添加了Python3支持。
可以使用支持Python3的PyGObject创建GTK+GUI,并且是PyGtk的后继。
许多其他主要软件包已被移植到Python3,包括:
NumPy和SciPy(用于数字处理和科学计算)
Django,Flask,CherryPy和Pyramid(网站)
PIL(图像处理模块)被其叉式枕头取代,它支持Python3。
cx_Freeze(用于包装应用程序及其依赖项)
py2exe(为Windows用户打包应用程序)
OpenCV3(一个开源计算机视觉和机器学习库)现在支持版本3.0和更高版本的Python3。
请求(一个人类的HTTP库)
lxml(一个功能强大的PythonicXML处理库,将libxml2/libxslt与ElementTreeAPI相结合)
BeautifulSoup4(用于解析HTML和XML的屏幕抓取库)
用于交互式计算的IPython/Jupyter项目完全支持Python3。
和许多,更多!
如果你想使用Python3.x,但是由于依赖性而害怕,可能值得先做一些研究。
这是一个正在进行的工作,这个wiki页面可能已经过时了。
此外,由Python2.6+和Python3.3+支持的大型常用子集,许多现代Python代码应该在Python3上大部分未经修改,尤其是与Web和GUI框架互操作的代码,强制应用程序正确区分二进制数据和文本(可能需要来自六个兼容性模块的一些帮助来处理名称更改。
尽管官方python文档和教程已经完全更新为Python3,但仍然有很多文档(包括示例)在Web上和使用Python2的参考书籍,尽管更多的是一直在更新。
这可能需要一些调整,以使事情与Python3的工作。
有些人只是不想使用Python3.x,这是它们的特权。
但是,他们在少数。
值得注意的是,如果您希望使用Python的替代实现,例如IronPython,Jython或Pyston(或Python平台或编译器实现的较长列表之一),Python3的支持仍然相对较少。
如果您有兴趣选择此类实现,以便与其他系统集成或执行性能,可能会影响您。
嗯,不完全3.0和3.1中的一些较少破坏性的改进分别已经反映到2.6和2.7。
有关回迁功能的详细信息,请参阅在Python2.6的新增功能和什么新的Python2.7。
一个非穷尽的功能列表,仅在3.x版本中可用,不会被转载到2.x系列:
字符串默认为Unicode
干净的Unicode/字节分离
异常链接
函数注释
关键字参数的语法
扩展元组拆包
非局部变量声明
此外,语言演进不仅限于核心语法或语义变化。
它还关注标准库,在3.x中进行了许多改进,不会直接转发到Python2.请参见Python3中的新增功能。
然而,许多标准库的改进也可通过PyPI获得。
也就是说,写得很好的2.x代码可能很像3.x代码。
这可能意味着许多事情,包括使用新式类,不使用古老的不推荐的奥术咒语打印,使用可用的惰性迭代器等。
一个实际的例子:
良好的2.x代码通常将使用xrange而不是范围;
xrange是Python3.x范围实现的起点(尽管Python3中的范围更好,因为它可以处理大于sys.maxint的值)。
应该注意的是xrange()不包括在Python3中。
最重要的是,建议您专注于编写好的代码,以便2.x与3.x不再是一个问题。
包括编写完整的单元测试套件,并获得Unicode权限。
(Python3.x相对于Unicode而言比Unicode少得多2.x认为这是一件好事,虽然它使一些软件包变得非常烦人。
)
假设您找不到已经支持Python3的替代软件包,您仍然可以考虑几个选项:
将库导入3.x.(“移植”意味着您使库工作在3.x.)
如果事实证明是非常困难的,并且所有其他的依赖项确实存在于2.x中,那么请考虑从2.x开始。
正如已经在其他地方所解释的那样,一旦每个依赖关系被成功移植,好的2.x代码通常会使切换变得无痛。
确定功能是否真的那么重要。
也许你可以放弃它?
理想的情况是您尝试将库移植到3.x.通常你会发现有人已经在这个工作了。
即使情况并非如此,现有的项目成员通常也会欣赏这些帮助,特别是随着移植常常在原始软件中发现错误,提高原始和3.x端口的质量。
移植并不总是容易的,但通常比从头开始编写自己的东西更容易。
在这个Python2移植指南中解释了你应该怎么做移植。
基本思想是使用2.x版本的库,并检查在Python2中使用-3命令行开关时,所有单元测试是否仍然通过,如果测试失败或发出警告,请修改源并重试(这可能需要降低与旧版本的Python版本的兼容性)。
一旦使用-3开关代码运行时没有警告,那么尝试使用Python3运行它。
最好的情况是当这个“工作”-使用现代Python2成语编写的代码与Python3源代码兼容时,在这一点上,“港口”可能已经完成。
如果Python3中的测试仍然失败,那么标准库的2to3实用程序通常可以自动创建一个将在Python3下运行的版本。
或者,ArminRonacher的python-modernize实用程序代替Python2.6+和3.2+或3.3+(取决于所使用的命令行选项)。
(如果使用后者,检查测试仍然通过Python2是很重要的!
任何一种方法使得可以从单个2.x代码库并行支持2.x和3.x。
这比试图并行维护独立的2.x和3.x分支要容易得多(只是问Python核心开发人员关于那个呢-他们已经停止了这么多年了)。
如果自动转换或现代化后测试仍然失败,则代码可能会受到Python2和3之间的语义变化的影响,转换器无法自动处理,也不会被-3开关检测到。
这样的问题应该是罕见的,但可能仍然存在-如果遇到一个问题,那么值得提交一个针对CPython的错误请求一个新的-3警告。
如果涉及到C扩展模块,并且该项目没有使用Cython,cffi或SWIG等包装器生成器自动处理Python2和3之间的差异,那么移植情况可能会更复杂,但即使这样,它仍然可能是比创建自己的等效包更容易。
该延长移植指南介绍了一些关键的差异。
在wiki上还有一些更深入的指南:
PortingPythonToPy3k,PortingExtensionModulesToPy3k
除了可以从2.x源代码生成3.x代码的2to3工具外,还有3to2工具,其目的是将3.x代码转换回2.x代码。
在理论上,这应该比走向另一个方向更好,因为3.x没有这么多讨厌的拐角情况,转换器处理(摆脱尽可能多的那些是打破的主要原因之一向后兼容性毕竟!
)。
然而,不太可能成功地转换大量使用3.x功能的代码(如函数注释或扩展元组解压缩)。
说3to2是在这个阶段比2to3少的路,所以你可能会在这里和那里遇到一些粗糙的边缘。
但是,如果要编写3.x代码,这绝
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python2xyupython3x 区别 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)