编写高质量 Python 代码的 47 个建议

我在这里总结归纳了 47 个有关 Python 代码的建议,试图去帮助你编写高质量的 Pyhon 代码。希望你能从中得到一定的收获。


建议1:放弃自己的代码风格

也许规范的书写看上去千篇一律,没有自己风格的代码没有特色。但是这样做可以帮助你规范你的代码,让它更加漂亮易读,而且统一的规范对于一个团队非常重要。

建议2:代码中添加适当的注释

更新代码的同时别忘记更新注释。

建议3:适当的添加空行

布局清晰、整洁、优雅的代码能够给阅读它的人带来愉悦感,而且它能帮助开发者之间进行良好的沟通。

建议4:编写函数的4个建议
  • 原则1 函数设计要尽量短小,嵌套层次不宜过深。

  • 原则2 函数申明应该做到合理、简单、易于使用。

  • 原则3 函数参数设计应该考虑向下兼容。

  • 原则4 一个函数只做一件事,尽量保证函数语句粒度的一致性。

建议5:常量集中在一起

将自己定义的常量使用全大写的命名,并将它们定义在一个文件中,这样更加方便使用和有利于维护。

建议6:利用 assert 语句发现问题

断言(assert)在很多语言中都存在,它主要为调试程序服务,能够快速方便地检查程序的异常或者发现不恰当的输入等,可防止意想不到的情况出现。

建议7:直接交换数据

当我们需要交换两个变量的值时,不推荐使用中间变量,这样更简洁且效率更高。

x, y = y, x
建议8:不推荐使用 tpye 来检查类型

基于内建类型扩展的用户自定义类型,type 函数并不能准确返回结果。因此更加推荐使用 isintance

建议9:除法时尽量转为浮点类型

标准的算术运算,包括除法,返回值总是和操作数类型相同。当你编写一个函数时,即使你希望调用者传入的是浮点类型,但如果不在函数入口进行类型检查或者转换,就无法阻止函数调用者传递整数参数,而往往这种类型的错误还不容易发觉。因此推荐的做法之一是当涉及除法运算的时候尽量先将操作数转换为浮点类型再做运算。

建议10:尽量少的使用 eval

Python中eval()函数将字符串str当成有效的表达式来求值并返回计算结果。实际应用过程中如果使用对象不是信任源,应该尽量避免使用eval,在需要使用eval的地方可用安全性更好的ast.literal_eval替代。

建议11:使用enumerate()获取序列迭代的索引和值

它代码清晰简洁,可读性好。它具有一定的惰性(lazy),每次仅在需要的时候才会产生一个(index, item)对。

enumerate() 函数的内部实现非常简单,enumerate(sequence,start=0) 实际相当于如下代码:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1

因此利用这个特性用户还可以实现自己的 enumerate() 函数。比如,myenumerate() 以反序的方式获取序列的索引和值:

def myenumerate(sequence):
    n = -1
    for elem in reversed(sequence):
        yield len(sequence) + n, elem
        n -= 1
建议12:区分 ==is

is 的作用是用来检查对象的标示符是否一致的,也就是比较两个对象在内存中是否拥有同一块内存空间,它并不适合用来判断两个字符串是否相等。而 == 才是用来检验两个对象的值是否相等的,它实际调用内部__eq__() 方法。所以 == 操作符是可以被重载的,而 is 不能被重载。

建议13:考虑兼容性,尽量使用 Unicode
建议14:少的使用 form ... import
  • 一般情况下尽量优先使用 import a 形式,如访问 B 时需要使用 a.B 的形式。

  • 有节制地使用 from a import B 形式,可以直接访问 B

  • 尽量避免使用 from a import *&#x

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值