Py2与Py3的区别

总结Py2 与Py3 的区别

1 编码区别

在Python2中有两种字符串类型str和Unicode。

默认ASCII

python2 str类型,相当于python3中的bytes类型

python2 unicode类型,相当于python3中的str类型


而在Python3中改为了bytes和str

默认utf-8


在 Python 中,不论是 Python2 还是 Python3 中,总体上说,字符都只有两大类:

  1. 通用的 Unicode 字符;
  2. (unicode 被编码后的)某种编码类型的字符,比如 UTF-8,GBK 等类型的字符。

Python2 中字符的类型:

  • str: 已经编码后的字节序列

  • unicode: 编码前的文本字符


Python3 中字符的类型:

  • bytes: 编码前的字节序列
  • str: 编码过的 unicode 文本字符

2 输入input

python2:name=raw_input('请输入姓名')

python3:name=input('请输入你的姓名')


3 输入print

python2:print "你好"

python3:print("你好")


4 数字表示

python2: 64位机器,范围 -263~263-1

超出上述范围,python自动转化为long(长整型) ;注:long(长整型)数字末尾有一个L

python3: 所有整型都是int, 没有long长类型


5 整型除法

python2:只能保留整数位

python3:可以保留所有内容


6 range

python2:

  • xrange:不会在内存中立即创建,而是在循环时,边循环边创建
  • range:在内存立即把所有的值创建

python3:

  • 只有range,相当于python2中的xrange
  • range:不会在内存中立即创建,而是在循环时,边循环边创建

7 字典

python2:返回列表,通过索引可以取值

python3:返回迭代器,只能通过循环取值,不能通过索引取值


8 class

python2.7中经典类和新式类混合

python3中都是新式类

经典类中使用深度优先,新式类中使用广度优先

python2不能使用super

python3可以使用super

原文地址:https://www.cnblogs.com/kai-/p/12116617.html