python2和python3的区别

现在python的主流版本是python3,但是也不难看到好多的程序是用python2写的,当然,面试的时候也会有人经常问到这两者的区别在哪了,之前遇到这个问题,就只是说,一直在用python3,所以对python2不怎么了解,但是不免是一种减分的回答,这里就将两者的区别总结一下,希望下次能够从容面对这个问题。

两者的区别就在于一部分库的迁移,还有一些用方法在用法上的改变,主要有一下几点:

1、print函数的用法:

这个估计大家都能注意到,就是python2的print函数没有括号,很简单,不再赘述

2、Unicode:

python2中代码对中文的支持并没有那么友好,所以会在开始写程序之前要先定义一下编码类型,但是3中默认就是utf-8,是支持中文的。

3、除法运算:

2中整数之间相除,结果会把小数部分完全忽略掉,但是3中会保留小数部分

4、异常:

在 Python 3 中处理异常也轻微的改变了,在 Python 3 中我们现在使用 as 作为关键词。

捕获异常的语法由 except exc, var 改为 except exc as var

使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

  • 1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。
  • 2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。

在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。

5、xrange:

2中有range和xrange两个函数,再3中只有range一个,相当于2中的xrange,是一个生成器。

6、不等运算符:

2中不等运算符有两种写法,!=和<>,但是在3中取消了<>这种写法。

7、模块改名:

旧的名字新的名字
_winregwinreg
ConfigParserconfigparser
copy_regcopyreg
Queuequeue
SocketServersocketserver
reprreprlib

StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合并到http包内。

取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。

8、数据类型:

3去除了long类型,只有一个int,新增了bytes类型。str类型和bytes类型可以相互转化。

9、input函数

2的用法是raw_input,3中变成input

10、打开文件:

2的用法是file()或者open(),但是在3中只有open()

11、map 、filter、reduce

从原来的内置函数变成了类,reduce更是从内置函数变成了function_tools

以上这些就是两个版本的部分变化,当然实际上应该会更多,如果有补充欢迎留言讨论一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值