学习Python 2还是Python 3?

学习Python 2还是Python 3?

#答案:都要学!

是否有如下疑问:
Python 3 才是Python的未来。
Python 官方都建议指直接学习Python 3。
Python 2 只维护到2020年。
Python 2慢慢的就没人用了。
那么我们来探讨下 Python 2和 Python 3 放入区别了。

为什么还要学习Python 2(特别是对于新手来说)

Python官网显示:Python 2到2020年停止维护,但不应该成为你拒绝Python 2的理由。

正如XP停止更新以后,很多基础的和入门级的学习都需要XP环境。前几天,微软宣布将在2020年对Win 7停止任何技术支持,之后即使遇到BUG和安全问题,他们也不会再修复。但是,看到周边的同事、朋友、亲戚,到底是用Win 7的多还是用Win 10的多?

据说,按照Python官方的原来计划,Python 2只支持到2015年,但又推迟到2020年,谁也说不准会不会再次延迟呢?

但是,在Python这个圈子,就是有很多人吵着要让别人升级Python 3。很多时候用户并不关心自己用的是Python 2还是Python 3,只要能用就行。所以,用Python 2的人并没有什么动力去升级到Python 3。

如果你觉得,Python 3才是Python的未来,不希望接触Python 2的项目。那么,问题来了,女神跟你说,晚上来我家给我修下电脑呗,但是我的电脑是Windows XP、Win7的,你是去还是不去?

Python 2对于职场老鸟

根据官网下载量统计,Python 2的使用量远远超过Python 3。Python 2的下载量约是Python 3的8倍。所以,学习Python,想直接抛弃Python 2学习Python 3,几乎是不可能的事情。

据统计:
10% 使用 Python 3
20% 既使用Python 2也使用Python 3,Python 2用的更多
70% 使用Python 2

所以,如果你说,我一开始学的就是Python 3,Python 3也是Python的未来,我不想去了解和学习Python 2。那么,你可能要和大半个中国互联网失之交臂了。或许你也不在乎,但是,如果有人拿钱砸你让你维护Python 2的代码呢?

我们都知道,在任何一家公司,升级服务器的操作系统版本都是一个很慎重事情,程序代码版本的升级也是慎之又慎的事情。所以,我们有理由相信,Python 2还会存在很长一段时间。很长是多长呢?至少比2020年还要长。

技术不是非黑即白的,Python也不是

以Windows 来说,当微软宣布 Windows 7 停止更新的时候,很多人依然抱着 Windows 7 不放,当你问他们为什么时,他们会一本正经地说,“新系统好卡啊”,或是“好多软件都不兼容啊”,或是“改变很大啊,好不习惯啊”,甚至是“ Windows 7 已经是很好的系统了,微软出个新系统就是为了坑钱”。

于是乎,春去春又来,每当有新的事物出现,这些人的想法依然没有改变。

当我脑子把 Windows 7 换成 Python 2 、Windows 10换成Python 3,不禁感到一阵恐惧。新事物,新技术的出现,我们要积极拥抱,但不能把原来的抹杀掉了。

其次,从Python 2到Python 3确实有一些差异,这是必然的也是一定的。但是,并没有大家想象的那么大。就像整容一样,这只是优化和提升,而非彻头彻尾的改变。Python 2和Python 3之间的差异不到Python语法的10%,我们可以快速地了解哪些Python 2里面的语法在Python 3中已经被弃用,在我们写代码的过程中,规避掉这一部分语法即可。在Python的最佳实践中,Python 3里弃用的Python语法,在Python 2里面也不推荐使用,不然也不会被弃用了。如果你知道并坚持Python的最佳实践,那么,对你来说,Python 2和Python 3的差异就更小了。

Python2与Python3的具体区别

对比Python 2.7 和 Python3.6,宏观上介绍下Python 3和Python 2的区别。

  • 统一了字符编码支持。
  • 增加了新的语法。print、exec等成为了函数。
  • 修改了一些语法。对一些语法进行删除和修改,但整体变化不大,约10%。
  • 修改了一些模块。
  • 优化。
  • 其它。

Python2与Python3主要的区别在以下几个方面:

  1. print函数
  2. 整数相除
  3. Unicode
  4. 异常处理
  5. xrange
  6. map函数
  7. 不支持has_key
  8. 其它

1、print函数
Python 2中print是语句(statement),Python 3中print则变成了函数。在Python 3中调用print需要加上括号,不加括号会报SyntaxError。
Python 2

print "hello world

输出

hello world

Python 3

print("hello world")

输出

hello world
print "hello world"

输出

 File "<stdin>", line 1
    print "hello world"
                      ^
SyntaxError: Missing parentheses in call to 'print'

2、整数相除
在Python 2中,3/2的结果是整数,在Python 3中,结果则是浮点数。
Python 2

print '3 / 2 =', 3 / 2
print '3 / 2.0 =', 3 / 2.0

输出

3 / 2 = 1
3 / 2.0 = 1.5

Python 3

print('3 / 2 =', 3 / 2)
print('3 / 2.0 =', 3 / 2.0)

输出

3 / 2 = 1.5
3 / 2.0 = 1.5

3、Unicode

Python 2有两种字符串类型:str和unicode,Python 3中的字符串默认就是Unicode,Python 3中的str相当于Python 2中的unicode。

在Python 2中,如果代码中包含非英文字符,需要在代码文件的最开始声明编码,如下
-- coding: utf-8 -

在Python 3中,默认的字符串就是Unicode,就省去了这个麻烦,下面的代码在Python 3可以正常地运行

4、异常处理

异常处理不同。

5、xrange

Python 2中有 range 和 xrange 两个方法。其区别在于,range返回一个list,在被调用的时候即返回整个序列;xrange返回一个iterator,在每次循环中生成序列的下一个数字。Python 3中不再支持 xrange 方法,Python 3中的 range 方法就相当于 Python 2中的 xrange 方法。

6、map函数

在Python 2中,map函数返回list,而在Python 3中,map函数返回iterator。

7、不支持has_key

Python 3中的字典不再支持has_key方法。

8、其它

  • Python3 采用的是绝对路径的方式进行 import,Python2 中相对路径的 import 会导致标准库导入变得困难。
  • Python3 使用更加严格的缩进。Python2 的缩进机制中,1 个 tab 和 8 个 space 是等价的,所
    以在缩进中可以同时允许 tab 和 space 在代码中共存。这种等价机制会导致部分 IDE 使用存在问题。
    Python3 中 1 个 tab 只能找另外一个 tab 替代,因此 tab 和 space 共存会导致报错

剑在手,怎么杀敌看你的了

Python 2和Python 3师承一派,有所同,也有所不同。怎么杀敌,剑在你手里,怎么杀敌看你的了。只要快!准!狠!就行了。

python3 和 python2 是不兼容的,而且差异比较大。

所以先学 Python2 还是 Python3 都不是问题,或者说都是问题。

论学 Python2 还是 Python3,都需要注意另外一边的不同点:所幸就是这些不同点很容易掌握,共同点才是我们需要好好学习的。毕竟,所有武功的招式中都有共通的地方。

所以个人建议:

  1. 如果是,你在企业中需要用到python而学习python的话,那就要看企业的应用python的版本进行学习;
  2. 如果是,想要更多的成熟解决方案,最少的bug,最稳定的应用那就用python2 ;
  3. 如果你是在读大学的学生,那我建议你学习python3,等到毕业的时候或许python已经成为了主流。
  4. 如果是,个人自学,建议学习python3。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值