新手入门选择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 linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 10/3
3
>>> print 11/3
3

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

Python 3.6.8 (default, Jan 14 2019, 11:02:34) 
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "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. 参考资料

6. 更多内容

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

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

如果你对Python语言感兴趣,可以关注我,或者关注我的微信公众号:xtuz666


相关主题:
相关推荐
  1. 成都市青羊区新智慧幸福里幼稚园 - 成都市幼儿园黄页
  2. 脱单!武汉的相亲角在哪你知道吗?
  3. 武汉动物园火烈鸟孔雀排队打疫苗
  4. 湖北将发放消费券 - 武汉新鲜事
  5. 摔了一跤想起你
  6. 国王的忧虑
  7. 烦恼的小兔子
  8. requests如何使用socket5代理
  9. 狮子和山羊
  10. 鞍山市铁西区南华幼儿园 - 鞍山幼儿园黄页
  11. 金色摇篮幼儿园盐山园 - 沧州幼儿园黄页
  12. 太原市小店区新秀煤机幼儿园煤机分园 - 太原幼儿园黄页
  13. 太原市杏花岭区金豆子国际幼稚园 - 太原幼儿园黄页
  14. 武汉女子网上做兼职被骗六十五万
  15. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  16. 深圳市光明新区光明办事处碧眼社区光明碧眼幼儿园 - 深圳幼儿园黄页
  17. Python公开课 - 爬虫基本原理
  18. 小母鸡买耳环
  19. 谁来的电话
  20. Nginx Location 匹配设置
  21. synchronized与lock的区别 - 阿里技术面试
  22. 奥迪客户不满加价,被武汉4S店销售群殴
  23. Python公开课 - 页面解析之XPath
  24. 母鸡妈妈下的大鸡蛋
  25. 一文看懂Python中的协程
  26. 百名网媒总编辑登上知音号欣赏武汉夜色
  27. 怒发冲冠
  28. 桂林市恭城县蓓蕾幼儿园 - 桂林幼儿园黄页
  29. 武汉00后大二学妹拍视频月入七十万
  30. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  31. Python公开课 - Python与操作系统
  32. 小名人幼儿园 - 乌鲁木齐幼儿园黄页
  33. OpenJDK与Oracle JDK的区别
  34. Python公开课 - 解释器详解
  35. iconv - Mac OS 文本格式转换工具
  36. 武汉推出越王勾践剑交通卡
  37. 月亮草
  38. 辽宁省沈阳市新民市城区八小英语特色幼儿园 - 沈阳幼儿园黄页
  39. 重庆市北碚区嘉康幼儿园 - 重庆幼儿园黄页
  40. “勇敢”的野兔