Python拥有众多学习者,可谓是如今许多编程初学者的首选语言。易学的语法、丰富的库和大量的社区都是Python飞速发展的主要原因。

6年前,在我掌握了一系列 Java 之后接触到Python时,经常发现自己在写Python代码时脑子里还想着Java。作为一个新手,我没有充分利用Python的优点,甚至在某些情况下,我滥用了它。

现在,我仍然看到一些初学者在没有先花时间阅读最佳实践和建议的情况下就开始用Python写代码。为解决这个问题,我列出了下面5个滥用Python的情景,并给出了相关改进建议。

1.使用列表时

列表允许存储各种数据类型的元素且不限制大小,尽管这种灵活性使列表成为收集数据的首选,但实际上仍有一些使用和不使用它的最佳实践情景。

在存储具有相同性质(数据类型和含义)的元素时,应该使用列表。Python不会通过编程来限制这一点,在列表中存储单个自然项让开发人员的工作更轻松。开发人员很容易预测将来列表会有哪些项,并确信地编写脚本。

思考下面的物品列表。这个列表并不包含单一性质的项目,开发人员无法确定该列表是否包含房屋部件、尺寸或其他东西,因此他应该分别处理不同的项目:

思考下面的水果列表和分数列表。从前两个项目中,你很容易推断出第一个列表会始终包含水果名字,而第二个列表始终包含分数值:

在存储具有不同含义或数据类型的项目时,使用元组更合适。元组不具备在不创建新对象的情况下,提供存储不受限项目的灵活性(因为元组是不可变的)。

2.迭代连接字符串时

在Python中所有东西都是对象,包括可变和不可变对象。每当更新分配给对象的值时,不可变对象需创建新对象,而可变对象则不需要。

假设你想在一个字符串中生成整个字母表。因为字符串是不可变对象,所以每当使用“+”运算符连接字符串值时,就会得到一个新的对象。

Join函数是连接字符串的首选方法。使用join函数可将计算时间缩短约3倍。在我做的一项测试中,迭代连接100万个字符串值耗时0.135秒,若使用join( )函数则只需0.044秒。

因此,需要连接字符串列表时请使用join函数。若使用join函数连接几个字符串,这并不会直观感受到性能的差异。若要连接几个字符串值,请使用.format而不是“+”运算符。例如:

3.读写文件时

若要使用Python读写文件,首先需要用内置的open函数打开文件。打开文件,读取或写入内容以及关闭文件。进行操作时,可能会出现一些问题,比如忘记关闭文件和异常处理失败。

操作完成后,若忘记关闭文件会导致后续问题。比如,如果在写入文件后忘记关闭该文件,那么写入操作将不会保存至文件中,并且在文件仍然保持打开状态时,你将保留在计算机中分配的资源。如果在处理文件时,没有手动处理异常和错误,那么文件将保持打开的状态。

建议在打开文件时使用with关键字。with是一个上下文管理器,它能封装代码并能确保自动处理异常。比如,当你读写文件时,with-body中可能出现的任何故障,都能自动处理异常,并且始终保持该文件关闭。

如果跳过with时,你需要自己处理一切,关闭文件和异常处理都得亲自处理。with会让你的生活更轻松,让情况得以控制。

4.跳过生成器时

在许多情景中,你需要生成一个值列表,稍后将在脚本中使用这些值。比如,你需要为前100个数字生成所有3个数字的组合。

当执行的命令完成时,列表组合将包含1M元组,每个元组有3个整型值。这些值将保存在内存中,直到被删除。使用sys模块中的getobjectsize函数检查对象大小,结果为8.29MB。

不再使用列表存储值并将它们全部保存至内存,可以创建一个生成器,每当你使用它时,将生成1个组合。这能减少内存消耗并提高运行速度。

所以,尽可能多地使用生成器。时刻牢记内存容量是有限的,并尽可能优化内存使用。请使用生成器,特别是在开发可伸缩的解决方案时。

5.使用推导式时

有一些程序员,他任何用Python编写代码都遵循Python之禅(The Zen of Python)的准则。如果是使用Python的新手,可能会倾向于夸大Python之禅的某些观点,而在其他方面避重就轻。

这一点在逐渐了解推导式时最容易注意到——你倾向于翻译推导式中的“每一个”循环。假设你有一个三维的数字矩阵,你很可能会想将其平面化。

使用列表推导式,平面化过程如下:

使用循环,平面化过程如下:

列表式很酷,但可读的代码更酷。不要试图总是让自己使用列表式,即使这样做可能需要编写更少的代码,也不会损失代码的可读性。如果大家对Python感兴趣的话,可以加一下我的薇信哦:abb436574,免费领取一套学习资料和视频课程哟~

不论是否有编程经验,每当尝试使用一种新的编程语言时,请一定要抽出时间阅读最佳实践。每种编程语言都有其独特之处,所以要确保在适当的场景合理地运用它们。

Python致力于帮助程序员更高效便捷地完成工作,我们不能忽视可能对代码生命期产生负面影响的小决策。请尽可能寻找更好的和最佳的解决方案,这是程序员的工作使命。

你在滥用Python吗?初学者常会遇到的5个情景相关推荐

  1. Python适合初学者或者0基础学习吗?

    Python适合初学者或者0基础小白学习吗?很多人都比较关注这个问题,因为近几年Python在互联网行业的发展显而易见,它的就业几率也非常高,具体来看看下面的详细介绍吧. Python适合初学者或者0 ...

  2. 《Python编程初学者指南》——1.6 回到Game Over程序

    本节书摘来自异步社区<Python编程初学者指南>一书中的第1章,第1.6节,作者[美]Michael Dawson,王金兰 译,更多章节内容可以访问云栖社区"异步社区" ...

  3. 怎么在电脑上使用python-开始在 Windows 上使用 Python(初学者)

    开始在 Windows 上使用 Python(初学者)Get started using Python on Windows for beginners 07/19/2019 本文内容 下面是一个分步 ...

  4. python初学者代码-Python-为什么Python是初学者的完美选择?

    原标题:Python-为什么Python是初学者的完美选择? 在过去的两年中,Python部落已经教会了成百上千个开发人员学会了他们的第一个编程语言.我们一直关注的一件事就是为一个初学程序员找到最好的 ...

  5. python编程电子书下载-python编程初学者指南

    python编程初学者指南全书共12章,内容浅显易懂,书中的每一个章节都会用一个完整的游戏来演示其中的关键知识点,最后都会对该章的知识点进行小结,还会给出一些小练习让你试试身手.东坡小编为大家分享py ...

  6. python需要学多久才能找到工作-为什么Python适合初学者,一般要学习多久

    为什么Python适合初学者?一般Python要学习多久?很多人都觉得,Python是一门很好学的语言,非常适合入门.但更多人都是不清楚具体原因的.那么,我们不如一起来看看Python为何更适合初学者 ...

  7. python编程入门指南上下百度云-Python编程初学者指南 PDF扫描版[87MB]

    Python编程初学者指南 内容简介: 如果你刚刚接触Python编程,而且正在寻找一本实用的教程,那么这本书为你量身打造.通过阅读本书,你不仅会学到很多实用的Python编程知识,还将懂得如何在实际 ...

  8. 《Python编程初学者指南》——1.2 Python简介

    本节书摘来自异步社区<Python编程初学者指南>一书中的第1章,第1.2节,作者[美]Michael Dawson,王金兰 译,更多章节内容可以访问云栖社区"异步社区" ...

  9. python一般学多久可以考试_为何Python适合初学者 一般Python要学习多久

    为何Python适合初学者?一般Python要学习多久?很多人都觉得,Python是一门很好学的语言,非常适合入门.但更多人都是不清楚具体原因的.那么,我们不如一起来看看Python为何更适合初学者, ...

最新文章

  1. mysql java orm_ObjectiveSQL(Java ORM) 之 MySQL 实战
  2. [转]安装和使用JD-Eclipse插件
  3. 编程python怎么读-python怎么读sql数据?
  4. 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer
  5. unity 2017 代码加密
  6. 解压ubi文件_请问为什么AM3352 NAND FLASH UBI文件系统挂载失败?
  7. 一顿操作猛如虎!云原生应用为何如此优秀?
  8. 数字图像处理复习记录(一)图像平滑、图像锐化、间隔检测
  9. 实验室-Chrome小恐龙跑酷游戏加强版
  10. 想成为顶级开发者吗?亲自动手实现经典案例
  11. 2021年危险化学品经营单位主要负责人考试及危险化学品经营单位主要负责人找解析
  12. 《智能路由器开发指南》核心笔记(全)——转载的
  13. Word邮件合并功能详解:合并后生成多个word文档,删除空白页
  14. 【C++】火车站的列车调度
  15. 最近很火的微信炸屎功能该怎么用?
  16. 三阶行列式简便算法_三阶行列式是什么?如何计算?
  17. 初级网络工程师学习日志——第二日笔记
  18. vue plupload 的使用
  19. python爬虫,wallhaven热门壁纸多线程采集下载源码
  20. 树莓派下安装pytorch(踩坑记录)

热门文章

  1. 这些数据分析方法你都掌握了么
  2. 2021中国新锐品牌发展报告
  3. Arrays类中的fill(用于填充数组)
  4. 虚拟专题:知识图谱 | 其他文章
  5. 虚拟专题:联邦学习 | 联邦学习算法综述
  6. 作者:张志恒(1990-),男,兰州大学资源环境学院硕士生。
  7. 【操作系统】I/O子系统的层次结构和核心I/O子系统
  8. 贪心策略构筑“奶牛铁塔”(洛谷P2676题题解,Java语言描述)
  9. win10系统同时安装python2和python3
  10. 用Gradle命令行编译Android工程