Python 3和Python 2 大部分都是相同的,要知道具体不同的部分可以直接参考文档。这里记录的是我遇到的或者看书看到的Python 2和3的不同点。
Python 3中通过内置的open函数获取文件句柄。该句柄默认会采用UTF-8的格式来操作文件
而在Python 2中,文件操作的默认编码格式是二进制形式。
Python 3中,bytes是一种包含8位值得序列,str是一种包含Unicode字符的序列。开发者不能以
>
或+
等操作符来混同操作bytes和str序列。Python2中,str是一种包含8位值的序列,unicode是一种包含Unicode字符的序列。如果str只有7位ASCII字符,那么可以通过想过的操作符同时使用str与unicode。
在Python 2中,整数除法的结果只包含整数部分,小数部 分被删除。
3 / 2 = 1
在Python3中,
3 / 2 = 1.5
Python3中打印
print
需要加括号,而Python2中不需要在Python2中
range()
返回一个递增或递减的数字列表,列表的元素值由三个参数决定xrange
是一个类,返回的是一个xrange
对象。使用xrange()
进行遍历,每次遍历只返回一个值。range()返回的是一个列表,一次性计算并返回所有的值。因此,xrange()的执行效率要高于range()Python3.3 后
range
和xrange
合并了,range
不再是列表了,而是类似迭代器获取用户输入的函数不同,Python3 使用的是
input()
函数来提示用户输入,读取用户输入(字符串)而在Python2.7 中则用raw_input()
,Python2.7中也有input()
函数,但他将用户的输入解读为Python代码,并尝试运行他们。最好的结果是出现错误,指出Python不明白输入的代码;而最糟的结果是,将运行你原本无意运行的代码。1
2
3
4
5
6
7
8
9
10# Python2.7
"Please enter somthing: ") a = raw_input(
Please enter somthing: 1 + 3
a
'1 + 3'
"Please enter somthing: ") b = input(
Please enter somthing: 1 + 3
b
4整数的表示显示不同
Python 2 中的整数分为一般整数(32位,与机器环境相关)和长整数(无穷精度),并且一个整数可以以l或L结尾,从而强迫其成为长整数。由于当整数的值超过32位时候会自动转换成长整数,不需要自己输入L,当需要额外的精度时Python会自动转换为长整数
Python 3 ,一般整数和长整数类型已经合二为一了,只有整数这一种,支持Python 2中的表示方法
1
2
3
4
5
6
7
8
9
10# Python 2.7
import sys
print(sys.maxint)
9223372036854775807
2 ** 63
9223372036854775808L
9223372036854775807) type(
<type 'int'>
9223372036854775807+1) type(
<type 'long'>