python 2.x 和 python 3.x 版本之间的区别是什么

python 2.x 和 python 3.x 版本之间的区别是什么

在本文中,我们将介绍 python 2.x 和 python 3.x 的一些重要区别,并附有示例。

  • 打印函数
  • 整数除法
  • Unicode 字符串
  • 异常处理
  • _future_module
  • xrange

以下是 python 2.x 和 python 3.x 的主要区别:

打印函数

在这种情况下,Python 2.x 中的打印关键字被 Python 3.x 中的 print() 函数替代。因为解释器将其解析为表达式,所以如果在 print 关键字后提供空格,括号在 Python 2 中也能工作。

示例

这是一个示例,以了解打印函数的用法。

print 'Python' 
print 'Hello, World!' 
print('Tutorialspoint')

输出

当以上代码在两个版本上都编译完成后,输出结果如下所示

Python 2.x版本

Python 
Hello, World! 
Tutorialspoint

Python 3.x版本

File "main.py", line 1
    print 'Python' 
          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean 
print('Python')?

下面的代码可以用于在Python中打印一条语句。

print('Tutorialspoint')

输出

每个版本得到的输出如下所示。

Python 2.x版本

Tutorialspoint

Python 3.x 版本

Tutorialspoint

整数除法

Python 2将没有小数点后的数字解释为整数,这可能会导致一些意外的除法结果。如果在Python 2代码中键入5 / 2,评估结果将是2,而不是您可能期望的2.5。

示例

该示例描述了Python中整数除法的工作原理。

print ('5 / 2 =', 5 / 2) 
print ('5 // 2 =', 5 // 2) 
print ('5 / 2.0 =', 5 / 2.0) 
print ('5 // 2.0 =', 5 // 2.0)

输出

在两个版本中获得的输出如下。

在Python 2.x版本中

5 / 2 = 2.5
5 // 2 = 2
5 / 2.0 = 2.5
5 // 2.0 = 2.0

在Python 3.x版本中

5 / 2 = 2.5
5 // 2 = 2 5 
/ 2.0 = 2.5 5 
// 2.0 = 2.0

Unicode

在Python 2中,隐式的str类型是ASCII码。然而,在Python 3.x中,隐式的str类型是Unicode码。

  • 在Python 2中,如果要将字符串存储为Unicode码,你需要标记它为“u”。

  • 在Python 3中,如果要将字符串存储为字节码,你需要标记它为“b”。

示例1

下面展示了Python 2和Python 3中Unicode的区别。

print(type('default string '))
print(type(b'string which is sent with b'))

输出

每个不同版本的输出如下。

在Python 2版本中

<type 'str'> 
<type 'str'>

在Python 3版本中

<class 'str'> 
<class 'bytes'>

示例2

Python 2和3不同版本中Unicode的另一个示例如下。

print(type('default string ')) 
print(type(u'string which is sent with u'))

输出

所获得的输出如下。

在Python 2版本中

<type 'str'> 
<type 'unicode'>

在Python3版本中

<class 'str'>
<class 'str'>

引发异常

在Python 3中,引发异常需要使用不同的语法。如果你想向用户显示错误消息,你必须使用这种语法。

raise IOError(“your error message”)

上述语法适用于Python 2和Python 3。

但是,以下代码只在Python 2中运行,而在Python 3中不运行。

raise IOError, “your error message”

_future_module

这并不是两个版本之间的区别,但这是很重要的要注意的。future模块被创建用来帮助迁移到Python 3.x。

如果我们想要在Python 2.x代码中使用Python 3.x兼容性,我们可以在代码中使用future导入。

示例

以下代码可以用来导入和使用

from __future__ import print_function
print('Tutroialspoint')

输出

下面是所获得的输出。

Tutorialspoint

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程