前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >翻译 | 更快的Python(一)

翻译 | 更快的Python(一)

作者头像
一墨编程学习
发布2019-05-08 10:28:28
6610
发布2019-05-08 10:28:28
举报

更快的Python(Python Faster Way)使用代码示例来说明如何书写Python代码能带来更高的性能。本文对代码进行了讲解,从性能和可读性等角度来选择出最适合的写法。

例子1:字符串格式化

  • 最差/最优时间比:1.95
  • 使用建议:Python 3.7或以上推荐使用f-string,其他版本推荐使用format方法。
  • 说明:字符串格式化是代码中最常遇到的情况,虽然在连接少量字符串的情景中,使用+号的性能最优,但是使用+号的代码可读性最差。如果使用Python 3.7或优以上版本,可以使用f-string来解决这个问题,f-string的性能比format方法和%操作符的性能都要高,可读性也比+号好。

例子2:字典的初始化

  • 最差/最优时间比:1.83
  • 使用建议:使用字面量初始化字典(以及其他集合类型)。
  • 说明:Python中初始化集合类型时使用字面量的方式,解释器会直接调用BUILD_MAP等字节码来创建,如果用构造函数的方式来创建,则需要先查询构造方法,再执行构造方法。使用字面量初始化,Python代码也更简洁。

自己是一名高级python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。送给正在学习python的小伙伴!每天会准时的讲一些项目实战案例,分享一些学习的方法和需要注意的小细节,我们的python学习交流Q,q–u--n【 784758214 】,这里是python学习者聚集地,欢迎初学和进阶中的小伙伴!

python最专业的技术分享

例子3:内置排序方法

  • 最差/最优时间比:1.26
  • 使用建议:根据是否需要修改原始值来决定使用哪个方法。
  • 说明:sorted和list.sort方法是Python中内置的排序方法,sorted方法不会修改原始值,list.sort方法在原始值上直接排序,会修改原始值。比较这两个方法的性能差异,意义不大。

例子4:初始化多个变量

  • 最差/最优时间比:1.01
  • 使用建议:推荐使用第二种。
  • 说明:从字节码中可以看出两种方式出了执行顺序之外,基本一致,所以性能上也非常接近。

例子5:多个变量的比较

image.png

  • 最差/最优时间比:1.11
  • 使用建议:推荐使用第二种。
  • 说明:使用第一种方法能带来一定的性能提升,但是提升有限,在实际情况中也很少出现多个变量连续比较大小的情况,并且第一种方法非常不Pythonic,所以推荐使用第二种。

例子6:if true的条件判断

  • 最差/最优时间比:1.17
  • 使用建议:推荐使用第一种。
  • 说明:从字节码上看,第一种方法的性能最高,并且语法上也更加简洁。

例子7:if false的条件判断

  • 最差/最优时间比:1.10
  • 使用建议:推荐使用第一种。
  • 说明:从字节码上看,第一种方法的性能最高,语法角度上,if not写成第二种和第三种都是不推荐的。

例子8:判断list是否为空

  • 最差/最优时间比:1.55
  • 使用建议:根据具体需求,优先使用前两种。
  • 说明:前两种代码性能更高,代码更简洁。同时,空列表a并不等于None,所以使用if a is None无法实现对空列表的判断。

例子9:判断object是否为空

  • 最差/最优时间比:1.00
  • 使用建议:根据具体需求,优先使用前两种。
  • 说明:理由同上一个例子。

例子10:遍历可迭代对象

  • 最差/最优时间比:1.12
  • 使用建议:根据具体情况选择。
  • 说明:两者性能差别不大,使用enumerate方法,可以不需要取对象的长度,可以直接获取到对象的index。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例子1:字符串格式化
  • 例子2:字典的初始化
  • 例子3:内置排序方法
  • 例子4:初始化多个变量
  • 例子5:多个变量的比较
  • 例子6:if true的条件判断
  • 例子7:if false的条件判断
  • 例子8:判断list是否为空
  • 例子9:判断object是否为空
  • 例子10:遍历可迭代对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档