主页

索引

模块索引

搜索页面

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

主页

索引

模块索引

搜索页面