打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
新手入门选择Python2还是Python3

1. 前言

Python的发展很快,几乎每年都在版本迭代。目前Python有两个主要版本,一个是python2.x,另一个是python3.x。

兔子先生最早接触Python的时候,使用的是python2.3,用来做垂直领域的爬虫开发。

2. Python2与Python3的主要区别

Python2 与 Python3 的区别很多,但是总的来说有以下几点:

2.1 Python3 是发展趋势,Python2不再维护

Short version: Python 2.x is legacy, Python 3.x is the present and future of the language

以上是摘录于wiki.python.org,龟叔 (Guido van Rossum) 的想法是不再对2.7版本进行向后兼容。

目前 Python2 发展普及了十多年,在一些公司的IT建设项目上,占据不小的分量,例如搜狐的个人邮箱,就是采用 Python2.6 开发并一直维护。

尽管 Python2 有如此辉煌的过去,但是由于 Python 社区的推荐和 更多 Python3 拥护者的出现,越来越多的企业转投 Python3 的怀抱并已经开始行动。

2.2 Python2 与 Python3 的库不兼容

Python2 与 Python3 本身并不兼容,这种情况下,对于库的选择和使用会让人抓狂。因为版本不兼容,很容易引起程序运行异常,甚至直接崩溃。

那么我们该如何解决这个问题呢,其实当选择使用这个库的之前,可以先了解它支持在哪些 Python 版本上运行。

举例来说, requests 当前的最新版本为 2.23.0,在 https://pypi.org/project/requests/ 上的在线文档上,清楚说明了兼容Python2.7,Python3.5-Python3.8 的版本,所以如果你的 Python 版本在上述的范围内,则可以放心使用。

2.3 Python3 对unicode支持更好

Unicode 和 ASCII 相比,可以支持更多的语言符号,例如罗马字母、中日韩文、Emoj 表情等。

在 Python3 中字符串默认是 Unicode 的编码,而 Python2 则是默认 ASCII 码,如果要指定为 Unicode 则需要在字符串前加个 u 作为前缀。

#--------------------------------#python2 中字符串编码示例# 默认为 ASCII 码xtuz_url = 'https://www.xtuz.net'# 显示指定为 Unicode 码xtuz_url = u'https://www.xtuz.net'#---------------------------------#python3 中字符串编码示例xtuz_url = 'https://www.xtuz.net'

2.4 Python3 优化了整数的除法

在 Python2 中,整数相除的情况下,即使有结果含有小数,也会丢弃,仅取整数处理。

例如:

Python 2.7.17 (default, Nov  7 2019, 10:07:09) [GCC 7.4.0] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> print 10/33>>> print 11/33

在 Python3 中,上述情况则会自动转换成浮点数处理。从开发者的角度来看,这样的结果更直观。

Python 3.6.8 (default, Jan 14 2019, 11:02:34) [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linuxType "help", "copyright", "credits" or "license" for more information.>>> print (10/3)3.3333333333333335>>> print (11/3)3.6666666666666665

2.5 print 语法的调整

Python3 中为了统一函数的表达方式,对 print 表达式进行了调整,必须要求有 ()

## python2中的输出方式print 'https://www.xtuz.net'## python3中的输出方式print('https://www.xtuz.net')

3. Python3取代Python2的原因

我们了解 Python2 与 Python3 的主要区别后,会不会感觉不就是 print 表达方式不同么?不就是在编码上有些区别吗?为什么要出现一个两个不兼容的大版本呢?

兔子先生在搜索了相关资料,总结来说有两个主要原因:

  1. 字符串和二进制数据在 Python2 中的含义相同,在《Zen of Python》中有个原则,"there should be one -- and preferably only one -- obvious way to do it",显然Python2 违背了这条原则。

  2. Python2 对 Unicode 的支持不友好,Python 对自己的定位是世界上所有人都能方便使用,而默认以 Unicode 编码方式来开发代码文本,更加更合适。

4. 新手入门如何选择正确的版本

兔子先生建议,能使用 Python3 则尽量使用。但是有以下情况可以考虑使用 Python2:

  • 运行环境不支持 - 某些在封闭的开发环境下,并不支持新安装Python3,例如CentOS的某些版本。

  • 依赖库不支持 - 某些项目用 Python2 开发,处于维护阶段,依赖库尚未支持Python3版本,如果强行迁移会产生较大的工作量和未知风险。

参考资料

5. 更多内容

原文来自兔子先生网站:https://www.xtuz.net/detail-131.html

查看原文 >>> 新手入门选择Python2还是Python3

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python中字符串前的u、r、b、f分别代表的含义
输入标题Python2.x与3​​.x版本区别
Python 2.x和Python 3.x,初学者应如何选择?
一些常见的Python新手问题
终于发布了,Python2.7.18!
Python字符串的encode与decode 转载 - lzh
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服