1.8.3. Python2.x 与 3.x 版本区别¶
Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。Python 3.0 在设计的时候没有考虑向下相容。
目前不支持 Python 3.0 的第三方库有 Twisted, py2exe, PIL 等。
大多数第三方库都正在努力地相容 Python 3.0 版本。即使无法立即使用 Python 3.0,也建议编写相容 Python 3.0 版本的程式,然后使用 Python 2.6, Python 2.7 来执行。
Python3.x 与 Python2.x 的许多兼容性设计的功能可以通过 __future__ 这个包来导入。如果 Python2.x 版本想使用使用 Python3.x 的 print 函数,可以导入 __future__ 包,该包禁用 Python2.x 的 print 语句,采用 Python3.x 的 print 函数
Unicode¶
Python 2.x:
>>> str = "我爱北京天安门"
>>> str
'\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8'
>>> str = u"我爱北京天安门"
>>> str
u'\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8'
Python 3.x:
>>> str = "我爱北京天安门"
>>> str
'我爱北京天安门'
除法运算¶
Python 2.x:
>>> 1 / 2
0
>>> 1.0 / 2.0
0.5
Python 3.x:
>>> 1/2
0.5
# py3 版整除
>>> import math
>>> math.trunc(1 / 2)
0
>>> math.trunc(-1 / 2)
0
// 除法,这种除法叫做 floor 除法,会对除法的结果自动进行一个 floor 操作,在 Python 2.x 和 Python 3.x 中是一致的。
异常¶
捕获异常的语法由
except exc, var
改为except exc as var
在 2.x 时代,所有类型的对象都是可以被直接抛出的,在 3.x 时代,只有继承自 BaseException 的对象才可以被抛出。
2.x 时代 raise 语句使用逗号将抛出对象类型和参数分开,3.x 取消了这种奇葩的写法,直接调用构造函数抛出对象即可。
八进制字面量表示¶
八进制数必须写成 0o777,原来的形式 0777 不能用了;二进制必须写成 0b111。
新增了一个 bin () 函数用于将一个整数转换成二进制字串。