总结Py2 与Py3 的区别
1 编码区别
在Python2中有两种字符串类型str和Unicode。
默认ASCII
python2 str类型,相当于python3中的bytes类型
python2 unicode类型,相当于python3中的str类型
而在Python3中改为了bytes和str
默认utf-8
在 Python 中,不论是 Python2 还是 Python3 中,总体上说,字符都只有两大类:
- 通用的 Unicode 字符;
- (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