Python 2.x 在过去超过十五年的时间里一直是最受欢迎的版本。但现在,越来越多的人正在转向 Python 3.x。Python3 比 Python2 好得多,并且带来了许多附加功能。此外,Python 2.x 今年即将变得过时。因此,从现在开始,我们建议大家开始使用 Python 3.x。
还在纠结吗?
想过是什么将两者区分开来的吗?让我们通过下面的内容来一探究竟。
首先,让我们通过这张图片快速对比一下,这会让你对预期的差异有大致的了解。
打印语句
Python 2.7: 在此版本中,额外的括号对不是强制性的。
Python
CODEBLOCK_bffa21c4
Python 3.x: 在此版本中,必须使用额外的括号对。
Python3
CODEBLOCK_260e2ab2
整数除法
Python 2.7:
除法 (/) 操作的返回类型取决于其操作数。如果两个操作数都是 int 类型,则执行地板除并返回一个 int。如果任一操作数是 float,则执行经典除法并返回一个 float。还提供了 // 运算符用于执行地板除,无论操作数是什么类型。
Python
CODEBLOCK_be4b9994
Python 3.x:
除法 (/) 始终返回浮点数。要进行地板除并获得整数结果(丢弃任何小数结果),你需要使用 // 运算符。
Python3
CODEBLOCK_7c42bfce
输入函数
Python 2.7:
当你使用 input() 函数时,Python 会根据你的输入自动转换数据类型。
Python
CODEBLOCK_56eef1b5
raw_input 获取文本形式的输入(即键入的字符),但它不会尝试将其转换为其他任何东西;即它总是返回一个字符串。
Python
CODEBLOCK_3b433b15
Python 3.x
在 Python3 中,input 函数的行为类似于 Python 2.7 中的 raw_input,它总是返回字符串类型。
Python3
CODEBLOCK_1bc7caa3
四舍五入函数
Python 2.7: 输出结果始终为浮点数。
Python
CODEBLOCK_716c269b
Python 3.x: 返回结果具有 n 位精度。
Python3
CODEBLOCK_52be5f4e
列表推导式
Python 2.7: 请参考下面的例子,看看全局变量是如何变化的。
Python
CODEBLOCK_816603d7
Python 3.x: 现在不存在命名空间泄漏了。这个问题已经修复了。
Python3
CODEBLOCK_6a37b593
Range 函数
Python 2.7 :
它同时拥有 INLINECODEd30c0918 和 INLINECODEdbe27b62 函数。当你需要一次迭代一个对象时,使用 xrange,当你需要一个实际的列表时,使用 range 函数。xrange 通常更快且节省内存。
Python
CODEBLOCK_c9120e76
Python 3.x :
在这里,range 的功能等同于 Python 2.7 中的 xrange。xrange 在 Python 3.x 中不再可用。
Python3
CODEBLOCK_94071c8a
异常处理
Python 2.7 : 这与 Python 3.x 的语法不同。
Python
CODEBLOCK_6dcbcf5d
Python 3.x: 这里需要包含 ‘As‘ 关键字。
Python3
CODEBLOCK_66febf68
列表推导式
Python 2.7: 使用的括号比 Python 3.x 少。
Python
CODEBLOCK_9c0de565
Python 3.x: 这里需要额外的括号对。
Python3
CODEBLOCK_5bf6fdfb
next() 函数和 .next() 方法
Python 2.7: 这里同时使用 next() 和 .next()。
Python
CODEBLOCK_7ea18a35
Python 3.x: 这里只使用 next()。使用 .nex