程序员宝藏库:https://github.com/Jackpopc/CS-Books-Store
代码质量,是评价开发者的一个重要指标。
我曾经不止一次的提及过代码质量的重要性,优秀的代码,直接关乎可读性、维护成本等诸多方面的问题。
Python作为一种高级编程语言,对于语法的限制非常少,开发者可以忽略很多要点,同样可以满足自己的需要的功能,因此,代码质量开始被很多Python开发者忽视。
但是,要成为一名优秀的开发者,代码质量是永远无法绕开的话题。
今天,就来教大家如何写出简洁、干净的Python代码,来提升一下你的代码质量吧!
1. 合并嵌套条件语句太多的嵌套,会使得代码变得非常难以理解,在Python中尤其如此,因为Python中没有括号来帮助描述不同的嵌套级别。
阅读深层嵌套的代码令人困惑,因为你必须跟踪哪些条件与哪些级别相关。
因此,我们力求在可能的情况下减少嵌套,并减少两个if条件可以组合使用的情况。
重构前
if a: if b: return c
重构后
if a and b: return c
2. 提升代码复用能力删减重复代码,是提升代码质量、减少代码冗余的一个很好方法。
有时候,我们在实现一些相近功能时,有很多代码是可以通过一些抽象进行复用的,通过这种方法,可以提升代码的简洁度。
重构前
if sold > disCOUNT_AMOUNT: total = sold * disCOUNT_PRICE label = f'Total: {total}'else: total = sold * PRICE label = f'Total: {total}'
在这段代码中,通过对变量label进行抽取,不仅能够删除重复代码,还能够使代码逻辑更加清晰。
重构后
if sold > disCOUNT_AMOUNT: total = sold * disCOUNT_PRICEelse: total = sold * PRICElabel = f'Total: {total}'
3. 利用any()替代for循环一个常见的问题,我们需要查找某个条件是否满足集合中一个或所有项目的条件。
这时,很多同学都会想起for循环。
found = Falsefor thing in things: if thing == other_thing: found = True break
其实,Python中有两个函数all()和any(),能够使这段代码变得更加清晰、简洁:
found = any(thing == other_thing for thing in things)
这个应该很容易理解,如果至少有一个满足any()内部条件,它会返回True,反之返回False。
4. 把重复代码块合并到条件中就像前面所说的那样,删除重复代码块,是提升代码常用的一种方法。
其中,if...elif就是一个非常值得关注的点。
def process_payment(payment): if payment.currency == 'USD': process_standard_payment(payment) elif payment.currency == 'EUR': process_standard_payment(payment) else: process_international_payment(payment)
从这段代码中可以看出,有很多冗余的代码可以优化,我们可以通过or把多余的语句合并起来:
def process_payment(payment): if payment.currency == 'USD'or payment.currency == 'EUR': process_standard_payment(payment) else: process_international_payment(payment)
5. 删除没必要的调用keys()字典是由一个个的键值对组成的,如果你遍历字典时只需要访问键,用不到值,有很多同学会用下面这种方式:
for currency in currencIEs.keys(): process(currency)
在这种情况下,不需要调用keys(),因为遍历字典时的默认行为是遍历键。
for currency in currencIEs: process(currency)
现在,该代码更加简洁,易于阅读,并且避免调用函数会带来性能改进。
6. 简化序列比较我们经常要做的是在尝试对列表或序列进行 *** 作之前检查列表或序列是否包含元素。
if len(List_of_hats) > 0: hat_to_wear = choose_hat(List_of_hats)
使用Python的方法则更加简单:如果python列表和序列具有元素,则返回为True,否则为False:
if List_of_hats: hat_to_wear = choose_hat(List_of_hats)
7. 仅使用一次的内联变量我们在很多代码中经常看到,有些同学分配结果给变量,然后马上返回它,例如,
def state_attributes(self): """Return the state attributes.""" state_attr = { ATTR_CODE_FORMAT: self.code_format, ATTR_CHANGED_BY: self.changed_by, } return state_attr
如果直接返回,则更加直观、简洁,
def state_attributes(self): """Return the state attributes.""" return { ATTR_CODE_FORMAT: self.code_format, ATTR_CHANGED_BY: self.changed_by, }
这样可以缩短代码并删除不必要的变量,从而减轻了读取函数的负担。
8. 将条件简化为return语句如果,我们实现的函数要返回一个布尔型的结果,通常会这样去做,
def function(): if isinstance(a, b) or issubclass(b, a): returnTrue returnFalse
但是,对比这样,直接返回结果会更加明智:
def function(): return isinstance(a, b) or issubclass(b, a)
结语从本文介绍的内容来看,这些知识点并不是很难,对于很多同学,可以秒级就能够理解其中的要点。
我认为这些更像是一种习惯,习惯性的去思考如何重构代码,如何让代码质量更进一步。
如果养成这些习惯,融为自己的一部分,那么就会在不知不觉中就会写出高质量的Python代码。
当然,提升代码的路上,要学习的远不止本文介绍的这些。
希望通过本文的介绍能够起到一个抛砖引玉的作用,来引导大家挖掘更多提升代码质量的方法。
总结
以上是内存溢出为你收集整理的懂了,涨知识了!全部内容,希望文章能够帮你解决懂了,涨知识了!所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)