Python2VSPython3
2020年1月1日,python官方就发飙了声明不再维护python2的版本技术更新。但是由于大部分公司基于Python2开发的项目任然存在不少,项目直接的迁移成本比较高,因此有些公司会在技术社区之间付费购买维护服务的方式,让专业的技术团队继续针对性的维护python2.x版本的技术。在这样的情况下。我们在熟练掌握python3的条件下,也要知道Python2和Python3的区别,并掌握这些不同和使用方法。
(一)print
在python2中,print是一个输出语句
在python3中print是一个函数
# Python2,直接在后面接上要输出的信息就行了
print "a", 12, True
# Python2
print("a", 12, True)
(二)range与xrange
range()在python2中会得到一个列表,在Python3中会得到一个range生成器
# Python2
>>>range(0,2)
[0,1,2]
# Python
range(0,2)
<class 'range'>
Python2中xrange(0,2)得到的是一个生成器,但是在Python3中改为了range(0,2)
(三)字符串
Python2中存储字符串是使用8bit字符串的存储方式,同时需要注意的是底层使用ASCII编码的方式,所以字符串会有两种不同格式的str和unicode
Python3中存储字符擦混,是使用16bit unicode字符串变长的存储方式。
(四)异常处理
异常处理区别的地方是起别名的语法有所不同
Python2中的异常处理语法:
try:
...
except Exception, e:
...
Python3中的异常处理语法:
try:
...
except Exception as e:
...
(五)打开文件的方式
Python2打开文件有多种方式
f = file(…)
# Python2
f = file("1.txt", "w")
f.write("hello world")
f.close()
f = open(…)
Python3打开文件只有一种方式
f = open(…)
(六)标准输入
Python2中支持两种标准输入
info = raw_input("提示消息") # 输入什么数据全部转换为字符串
info = input("输入整数:") # 输入什么就输出什么数据类型,输入字符串需要添加引号,否则就是一个变量
Python3只需要一种标准输入
info = input(“提示消息”)
(七)除法运算
Python2中,/表示的是整除,但是加上浮点数就是真实除法
print 5/2 # 输出2
print 5.0/2 # 输出2.5
Python3中,/表示真实的除法,//表示整除
(八)自定义类型
Python2中保留了原始的类型继承关系经典类,同时也支持继承object而衍生的新式类,所以在多继承操作过程中会出现两种不同的数据检索方式,让中大型项目的开发变得复杂和困难。
Python3中废弃了经典类,只保留了新式类,也就是现在我们通用的自定义类型,直接或者间接object。