Python2与Python3的9点差异对比总结

注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料将在公众号CTO Plus发布,请关注公众号:CTO Plus

本篇原文:

Python2与Python3的9点差异对比总结

Python2与Python3是两个不同的Python版本,它们之间存在一些重要的差异,这两个版本并不完全兼容。本文将介绍Python2与Python3主要的差异,以及这些差异对Python开发的影响。

1. print函数

Python2中print语句使用方式是print “Hello, World!”,而Python3中使用的是print(“Hello, World!”)。也就是说,在Python3中,print语句已经变成了print函数。这个变化看起来很小,但对于需要将Python2代码移植到Python3的开发人员来说,它会带来很多问题。

2. 字符串和编码

Python 2和Python 3默认的字符串处理方式不同。Python3中字符串默认使用的是Unicode编码,不需要使用u前缀。而在Python2中,字符串默认使用的是ASCII编码,如果需要采用Unicode编码,则需使用u前缀。这个改变对于处理国际化和本地化的应用程序非常重要。例如,如果程序需要在不同的地区运行,那么在Python2中需要自己编写编码转换的代码,而在Python3中则不需要了。

Python2:

my_str = u'Hello, world!'

Python3:

my_str = 'Hello, world!'

3. 整型除法

在Python2中,整型除法时,如果除数和被除数都是整数,那么结果也是整数,整数除法不会保留小数部分,结果会被向下取整,如果需要执行浮点数除法,则需要将其中一个操作数为浮点数。例如,5/2返回结果是2。在Python3中,整型除法返回的是浮点数。例如,5/2返回结果是2.5。这个差异可能会对某些应用程序的结果产生影响。

Python2:

print(3/2) # 输出1

print(3.0/2) # 输出1.5

Python3:

print(3/2) # 输出1.5

4. xrange和range

在Python2中,使用xrange函数来生成指定范围的迭代器,这个函数在Python3中已经被弃用,而range函数则可以实现xrange函数的功能。这个变化对于需要将Python2代码移植到Python3的开发人员来说,可能需要修改一些代码。

在Python 2中,range的返回值是一个列表对象,如果需要生成大量的整数序列,会占用较多的内存。如果需要生成大量整数序列,需要使用xrange函数,生成一个生成器对象。在Python 3中,range函数返回一个可迭代对象。

Python2:

for i in xrange(1000000):

    print(i)

Python3:

for i in range(1000000):

    print(i)

可以看到xrange在python3中已经被遗弃

5. 异常的处理方式

在Python2中,可以使用except Exception as e来捕获异常。而在Python3中,需要使用except Exception as e语句来实现相同的功能。这个变化对于需要将Python2代码移植到Python3的开发人员来说,可能需要修改一些异常处理代码。

在Python 2中,捕获异常的方式可以使用以下方式:

try:

    # some code

except Exception, e:

    # handle exception

在Python 3中,捕获异常的方式如下:

try:

    # some code

except Exception as e:

    # handle exception

6. 文件操作的方式

在Python 2中,文件操作中使用file函数打开文件,而在Python 3中,使用open函数打开文件。

7. urllib

#py3

from urllib.parse import urlparse, urlencode, urlsplit

from urllib.request import urlopen

# py2

# from urllib import urlencode

# from urlparse import urlparse

# from urllib2 import urlopen

8. 用户输入的差异

在Python 2中,使用raw_input函数获得用户输入,而在Python 3中,使用input函数获得用户输入。

9. map和filter函数的差异

在Python 2中,map和filter函数返回一个列表对象,而在Python 3中,map和filter函数返回一个可迭代对象。

总体来说,Python3相较Python2做出了一些改进,例如增加了async和await来支持异步IO、优化了内存管理、显示地区别对待文本和二进制数据等,这些变化可以提高Python应用程序的性能和可维护性。但是,这些变化可能会对需要将Python2代码移植到Python3的开发人员来说,产生一些适应性问题,Python 2和Python 3中有很多方面的差异,如果需要从Python 2迁移至Python 3,需要认真查看代码中的差异,进行相应的修改。建议新项目使用Python3进行开发,而对于已有的Python2项目,可以考虑使用2to3工具进行代码转换来适应Python3的规范。

Python专栏
https://blog.csdn.net/zhouruifu2015/category_5742543


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接


更多精彩,关注我公号,一起学习、成长

关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s?__biz=MzIyMzQ5MTY4OQ==&mid=2247484278&idx=1&sn=2b774f789b4c7a2ccf10e465a1b9def6&chksm=e81c2070df6ba966026fd7851efa824b5e2704e3fd34e76228ca4ce64d93f7964cd4abe60f2b#rd

标准库系列-推荐阅读:


推荐阅读:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值