Python2和Python3的区别

Python2马上就要告别历史舞台了,迎来的将是Python3

那么他们有什么主要的区别呢?

1.默认字符标准的区别

python2中默认的字符串类型默认是ASCII,python3中默认的字符串类型是Unicode

       备注:Unicode和utf-8的关系:Unicode是内存编码表示方案(规范),而utf-8是如何保存和传输Unicode的方案(实现)

        在python2中,为了在文本编辑(读取文本)时,内存中需要Unicode编码,所以用decode('utf-8')解码,把UTF-8转化为Unicode编码  (同理,encode('utf-8')是把Unicode转化为UTF-8编码)

python3 内存中使用的字符串全部是 unicode 码,但是网络传输的数据或者从磁盘读取的数据是把 unicode 码转换过的数据,通常情况下可能是 utf-8 格式的数据,所以如果从网络中读取或者磁盘中读取其实就是把 utf-8 格式的数据解码成 unicode 码数据,相反如果想把内存中 unicode 码数据存储到磁盘或者网络中需要对 unicode 码进行编码,通常可以采用 utf-8 的形式进行编码

python3解释器中自带UTF-8编码器,python2中不自带,所以需要手动设置: #coding:utf-8

2.字符串类型

python中有两种字符类型:字节字符串和文本字符串。

版本 python2 python3
字节字符串 str bytes
文本字符串 Unicode str

3.print

python2中,print是个特殊语句,python3中print是函数。

python2:print 'hello word!'

python3:print('hello word!',file=sys.stderr)

4.除法/

python2中/的结果是整型,python3中是浮点类型。

5.导入

python2中的包导入顺序:标准库—相对倒入(即当前目录)—绝对导入(sys.path)

python3中的包导入顺序:标准库—绝对导入(如果想要相对导入,使用from .moudel)

6.类

python2中默认类是旧式类,需要显式继承新式类(object)来创建新式类。

python3中完全移除旧式类,所有类都是新式类,但仍可显式继承object类,创建类时默认继承object



7.

模块合并

python2中的StringIO和cStringIO合并为python3中的io

python2中的pickle和cPickle合并为python3中的pickle。

python2中的urllib、urllib2和urlparse合并为python3中的urllib


阅读更多
个人分类: python
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭