带有示例的Python 2.x和Python 3.x之间的重要区别

Division operator

如果我们要移植代码或在python 2.x中执行python 3.x代码,如果整数除法更改未被注意会很危险(因为它不会引发任何错误)。 移植代码时,最好使用浮点值(例如7.0 / 5或7 / 5.0)来获得预期的结果。

print function

这是最著名的更改。 在这种情况下,Python 2.x中的print关键字被Python 3.x中的print()函数取代。 但是,如果在print关键字之后添加空格,则括号在Python 2中有效,因为解释器将其视为表达式。

如我们所见,如果我们在python 2.x中使用括号,那么就没有问题,但是如果我们在python 3.x中不使用括号,则会出现SyntaxError。

Unicode:

在Python 2中,隐式str类型为ASCII。 但是在Python 3.x中,隐式str类型是Unicode。

python2也支持Unicode

xrange:

Python 3.x中不存在Python 2.x的xrange()。 在Python 2.x中,range返回一个列表,即range(3)返回[0,1,2],而xrange返回一个xrange对象i。 例如,xrange(3)返回迭代器对象,该对象的工作方式类似于Java迭代器,并在需要时生成数字。

如果我们需要多次遍历同一序列,则我们首选range(),因为range提供了一个静态列表。 xrange()每次都会重新构造序列。 xrange()不支持切片和其他列表方法。 xrange()的优点是,当任务要在较大范围内进行迭代时,它可以节省内存。

在Python 3.x中,range函数现在可以执行xrange在Python 2.x中的作用,因此,为了使我们的代码具有可移植性,我们可能希望坚持使用range。 因此,Python 3.x的range函数是Python 2.x的xrange。

Error Handling:

两种版本的错误处理都有很小的变化。 在python 3.x中,必须使用“ as”关键字。

__future__模块:

这基本上不是两个版本之间的区别,而是在这里需要提及的有用内容。 __future__模块的想法是帮助迁移到Python3.x。

如果我们计划在2.x代码中提供Python 3.x支持,则可以在代码中使用_future_导入。

例如,在下面的Python 2.x代码中,我们通过__future__模块使用Python 3.x的整数除法行为。