0、内涵
1 2
| Python2 1:臃肿,源码的重复量很多 2:语法不清晰,掺杂C,php,Java的一些陋习。 Python3 几乎是重构后的源码,规范,清晰,优美。
|
1、编译时指定字节
1 2 3 4 5 6 7 8
| python2 在编译安装时,可以通过参数 --enable-unicode=ucs2 或 --enable-unicode=ucs4 分别用于指定使用2个字节、4个字节表示一个unicode; python3 无法进行选择,默认使用 ucs4
impor sys print(sys.maxunicode)
|
2、默认编码方式
1 2 3 4 5
| Python2 默认编码方式是 ascll 码 Python3 默认编码方式是 utf-8
Python2 输出中文要加在文件加 # -*- encoding:utf-8 -*- Python3 不需要
|
3、print
1 2
| Python2 可以使用 print,也可以使用 print(),例:print('111') 或 print '111' Python3 只能使用 print(),例:print('111')
|
1 2
| Python2 中是 raw_input Python3 中是 input
|
5、除法
1 2
| Python2 不会取余,如:5/2=2 Python3 会取余 如:5/2=2.5
|
6、函数继承
1 2
| Python3 中的函数都是新式类 Python2 中的函数新式类和经典类共存
|
新式类都继承自 object,且 super()
和 mro()
只存在于新式类,只要继承自object,都是新式类。
在多继承问题中,有两种继承方式:
广度优先。即A和E能同时到达F,则走完A之后走C,即 D->B->A->C->E->F
,新式类使用广度优先。
super的本质:不是单纯找父类,而是根据调用者的节点位置的广度优先顺序来的,即和广度优先正好相逆 F->E->C->A->B->D
深度优先。一条路走到头,即 D->B->A->F->C->E
,经典类遵循深度优先。
7、True和False
1 2
| python2 中是两个全局变量可以重新赋值 python3 中为两个关键字,不可重新赋值
|
8、文件操作
1 2 3
| python2:readliens() 读取文件的所有行,返回一个列表,包含所有行的结束符。 xreadliens() 返回一个生成器,循环取值。 python3: 只有readlines()。
|
9、包结构
1 2
| python2:必须有__init__ python3:不是必须的了
|
10、其他
sort()
1 2 3 4 5 6
| sorted(iterable, cmp=None, key=None, reverse=False)
sorted(iterable,key=None,reverse=False)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| '迭代': py2:xrange、range py3:统一使用range,并且range的机制也进行修改并提高了大数据集生成效率 'Nonlocal': py3专有的(声明为非局部变量) 'yield': py2:yield py3:yield/yield from
exec语句被python3废弃,统一使用exec函数 不相等操作符"<>"被Python3废弃,统一使用"!=" long整数类型被Python3废弃,统一使用int 迭代器iterator的next()函数被Python3废弃,统一使用next(iterator) 异常StandardError 被Python3废弃,统一使用Exception 字典变量的has_key函数被Python废弃,统一使用in关键词 file函数被Python3废弃,统一使用open来处理文件,可以通过io.IOBase检查文件类型
|