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 () 函数用于将一个整数转换成二进制字串。