2.x与3.x 的区别从以下8个方面来讲:性能、编码、语法、字符串与字节串、数据类型、面向对象、异常、其他方面。
1、性能
python3.x起始比python2.x效率要低,但是python3.x有极大的优化空间,效率正在追赶,目前已经不差多少。
2、编码
python3.x原码文件默认使用utf-8,使变量名更为广阔,可以使用汉字作为变量,但是不建议使用。
3、语法
3.1、去除了<>,改用!=
3.2、/
python2.x整型触发返回整数
python3.x整型触发返回浮点数,整除使用//
3.3、加入了nonlocal语句
在闭包的情况下,想使用外部的变量值。
3.4、去除了print语句,加入了print()函数
print("sunck", end=" ")
print("kaige")
3.5、去除了raw_input语句,加入了input()函数
3.6、新的super(),可以不再给super()传递参数
class A(object):
pass
class B(A):
def __init__(self):
super().__int__()
3.7、改变了顺序操作符的行为,比如x<y,当x和y类型不匹配时抛出TypeError异常
3.8、新式的8进制数字变量
4、字符串和字节串
python2.x 字符串以8bit字符串存储
python3.x 字符串以16bit Unicode字符串存储,现在字符串只有str一种类型
5、数据类型
python3.x去除了long类型,现在只有一种整数类型int,但是它的行为就像2.x中long
新增了bytes类型,对应2.x版的八位串
6、面向对象
引入抽象基类
7、异常
所有异常都从BaseException继承,并删除了StardardError
python2
try:
……
except Exception e:
……
python3
try:
……
except Exception as e:
……
8、其他
python2.x中的xrange()在python3.x中名为range()
file类被废弃
python2可以使用file(path)、open(path)
在python3中只使用open()