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