津爱改装车|你在滥用Python吗?初学者常会遇到的5个情景

全文共3398字 , 预计学习时长9分钟
Python拥有众多学习者 , 可谓是如今许多编程初学者的首选语言 。 易学的语法、丰富的库和大量的社区都是Python飞速发展的主要原因 。
6年前 , 在我掌握了一系列Java之后接触到Python时 , 经常发现自己在写Python代码时脑子里还想着Java 。 作为一个新手 , 我没有充分利用Python的优点 , 甚至在某些情况下 , 我滥用了它 。
现在 , 我仍然看到一些初学者在没有先花时间阅读最佳实践和建议的情况下就开始用Python写代码 。 为解决这个问题 , 我列出了下面5个滥用Python的情景 , 并给出了相关改进建议 。
1.使用列表时
列表允许存储各种数据类型的元素且不限制大小 , 尽管这种灵活性使列表成为收集数据的首选 , 但实际上仍有一些使用和不使用它的最佳实践情景 。
在存储具有相同性质(数据类型和含义)的元素时 , 应该使用列表 。 Python不会通过编程来限制这一点 , 在列表中存储单个自然项让开发人员的工作更轻松 。 开发人员很容易预测将来列表会有哪些项 , 并确信地编写脚本 。
思考下面的物品列表 。 这个列表并不包含单一性质的项目 , 开发人员无法确定该列表是否包含房屋部件、尺寸或其他东西 , 因此他应该分别处理不同的项目:
list_of_things=['Door',2,'Window',True,[2.3,1.4])]思考下面的水果列表和分数列表 。 从前两个项目中 , 你很容易推断出第一个列表会始终包含水果名字 , 而第二个列表始终包含分数值:
list_of_fruits=['apple','orange','pear','cherry','banana']list_of_scores=[80,98,50,55,100]在存储具有不同含义或数据类型的项目时 , 使用元组更合适 。 元组不具备在不创建新对象的情况下 , 提供存储不受限项目的灵活性(因为元组是不可变的) 。
2.迭代连接字符串时
在Python中所有东西都是对象 , 包括可变和不可变对象 。 每当更新分配给对象的值时 , 不可变对象需创建新对象 , 而可变对象则不需要 。
假设你想在一个字符串中生成整个字母表 。 因为字符串是不可变对象 , 所以每当使用“+”运算符连接字符串值时 , 就会得到一个新的对象 。
one_line_alphabet=''forletter_indexinrange(ord('a'),ord('z')):one_line_alphabet+=chr(letter_index)Join函数是连接字符串的首选方法 。 使用join函数可将计算时间缩短约3倍 。 在我做的一项测试中 , 迭代连接100万个字符串值耗时0.135秒 , 若使用join()函数则只需0.044秒 。
small_letters=[chr(i)foriinrange(ord('a'),ord('z')+1)]single_line_alphabet=''.join(small_letters)因此 , 需要连接字符串列表时请使用join函数 。 若使用join函数连接几个字符串 , 这并不会直观感受到性能的差异 。 若要连接几个字符串值 , 请使用.format而不是“+”运算符 。 例如:
name='John'surname='Doe'full_name='{name}{surname}'.format(name=name,surname=surname)3.读写文件时
若要使用Python读写文件 , 首先需要用内置的open函数打开文件 。 打开文件 , 读取或写入内容以及关闭文件 。 进行操作时 , 可能会出现一些问题 , 比如忘记关闭文件和异常处理失败 。


推荐阅读