全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
863 0
2020-10-14
Python 2.x和Python 3.x之间的重要区别(包括示例)
部门运营商
如果我们要移植代码或在python 2.x中执行python 3.x代码,则整数整形更改未引起注意会很危险(因为它不会引发任何错误)。移植代码时,最好使用浮点值(例如7.0 / 5或7 / 5.0)来获得预期的结果。
filter_none
编辑
play_arrow
亮度_4
print 7 / 5
print -7 / 5     
'''  
Output in Python 2.x  
1  
-2  
Output in Python 3.x :  
1.4  
-1.4  
# Refer below link for details  
# https://www.geeksforgeeks.org/division-operator-in-python/  
'''
打印功能
这是最著名的更改。在这种情况下,Python 2.x中的print关键字被Python 3.x中的print()函数取代。但是,如果在print关键字之后添加空格,则括号在Python 2中有效,因为解释器将其视为表达式。
filter_none
编辑
play_arrow
亮度_4
print 'Hello
print('Hope You like these facts')  
'''  
Output in Python 2.x :  
Hello
Hope You like these facts  
Output in Python 3.x :  
File "a.py"
    print 'Hello
                       ^  
SyntaxError: invalid syntax  
Refer below link for details  
https://www.geeksforgeeks.org/g- ... le-variable-python/  
'''
如我们所见,如果我们在python 2.x中使用括号,那么就没有问题,但是如果我们在python 3.x中不使用括号,则会得到SyntaxError。
Unicode:
在Python 2中,隐式str类型为ASCII。但是在Python 3.x中,隐式str类型是Unicode。
filter_none
编辑
play_arrow
亮度_4
print(type('default string '))  
print(type(b'string with b '))  
'''  
Output in Python 2.x (Bytes is same as str)  
<type 'str'>  
<type 'str'>  
Output in Python 3.x (Bytes and str are different)  
<class 'str'>  
<class 'bytes'>  
'''
Python 2.x也支持Unicode
filter_none
编辑
play_arrow
亮度_4
print(type('default string '))  
print(type(u'string with b '))  
'''  
Output in Python 2.x (Unicode and str are different)  
<type 'str'>  
<type 'unicode'>  
Output in Python 3.x (Unicode and str are same)  
<class 'str'>  
<class 'str'>  
'''
xrange:
Python 2.x的xrange()在Python 3.x中不存在。在Python 2.x中,range返回一个列表,即range(3)返回[0,1,2],而xrange返回一个xrange对象,即xrange(3)返回与Java迭代器类似的迭代器对象,并在需要时生成数字。
如果我们需要多次遍历同一序列,则我们首选range(),因为range提供了一个静态列表。xrange()每次都会重新构造序列。xrange()不支持slice和其他列表方法。xrange()的优点是,当任务要在较大范围内进行迭代时,它可以节省内存。
在Python 3.x中,range函数现在执行xrange在Python 2.x中的作用,因此为了使我们的代码具有可移植性,我们可能希望坚持使用range。因此,Python 3.x的range函数是Python 2.x的xrange。
filter_none
编辑
play_arrow
亮度_4
for x in xrange(1
    print(x)
for x in range(1
    print(x)
'''  
Output in Python 2.x  
1 2 3 4 1 2 3 4  
Output in Python 3.x  
NameError: name 'xrange' is not defined  
'''
错误处理:
两种版本的错误处理都有很小的变化。在python 3.x中,必须使用'as'关键字。
filter_none
编辑
play_arrow
亮度_4
try:  
    trying_to_check_error  
except NameError
    print err
'''  
Output in Python 2.x:  
name 'trying_to_check_error' is not defined Error Caused  
Output in Python 3.x :  
File "a.py"
    except NameError
                    ^  
SyntaxError: invalid syntax  
'''
filter_none
编辑
play_arrow
亮度_4
try:  
     trying_to_check_error  
except NameError as err: # 'as' is needed in Python 3.x  
     print (err
'''  
Output in Python 2.x:  
(NameError("name 'trying_to_check_error' is not defined"
Output in Python 3.x :  
name 'trying_to_check_error' is not defined Error Caused  
'''
__future__模块:
这基本上不是两个版本之间的区别,而是在这里需要提及的有用内容。__future__模块的想法是帮助迁移到Python3.x。
如果我们计划在我们的2.x代码中提供Python 3.x支持,则可以在代码中使用_future_导入。
例如,在下面的Python 2.x代码中,我们使用__future__模块使用Python 3.x的整数除法行为。
filter_none
编辑
play_arrow
亮度_4
# In below python 2.x code
# same as Python 3.x because we use  __future__  
from __future__ import division  
print 7 / 5
print -7 / 5
输出:
1.4
-1.4
另一个示例,我们使用__future__模块在Python 2.x中使用方括号:
filter_none
编辑
play_arrow
亮度_4
from __future__ import print_function      
print('GeeksforGeeks')  
输出:
极客

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群