对于python程序对代码缩进的要求非常严格_python编程规范与代码优化建议

1.严格使用缩进来体现代码的逻辑从属关系。

python对代码的缩进是硬性要求,这一点必须时刻注意。如果某个代码段的缩进不对,那么整个程序就是错的,要么是语法错误无法执行,要么是逻辑错误导致错误结果,而检查这样的错误会花费很多时间。

2.每个import语句只导入一个模块,最好按标准库、扩展库、自定义库的顺序依次导入。

尽量避免导入整个库,最好只导入确实需要使用的对象,这会让程序运行更快。

3.最好在每个类、函数定义和一段完整的功能代码之后增加一个空行,在运算符两侧各增加一个空格,逗号后面增加一个空格。

按照这样的规范写出来的代码布局和排版比较松散,阅读起来更加轻松。不论是前面第一条讲的缩进,还是这里谈的空行与空格,主要是提高代码可读性。稍微有点例外的是,在正常的赋值表达式中等号两侧都是各增加一个空格,但在定义函数的默认值参数和使用关键字参数调用函数时一般并不在参数赋值的等号两侧增加空格。这样松中有紧也是为了提高代码的可读性。

4.尽量不要写过长的语句。

如果语句过长,可以考虑拆分成多个短一些的语句,以保证代码具有较好的可读性。如果语句确实太长而超过屏幕宽度,最好使用续行符(line continuation character)“\”,或者使用圆括号将多行代码括起来表示是一条语句。

5.虽然python运算符有明确的优先级,但对于复杂的表达式建议在适当的位置使用括号使得各种运算的隶属关系和顺序更加明确。

6.对关键代码和重要的业务逻辑代码进行必要的注释。

统计数据表明,一个可读性较好的程序中应包含大概30%以上的注释。在python中有两种常用的注释形式:#和三引号。#用于单行注释,三引号常用于大段说明性文本的注释。

7.在开发速度和运行速度之间尽量取得最佳平衡。

内置对象运行速度最快,标准库运行次之,用C或FORTRAN编写的扩展库运行速度也比较快,而纯python的扩展库往往速度慢一些。因此,在开发项目时,应优先使用python内置对象,其次考虑使用python标准库提供的对象,最后考虑使用第三方扩展库。然而,有时候只使用内置和标准库对象的话,很可能无法直接满足需要。这时候有两个选择:一是使用内置对象和标准库对象编写代码实现特定的逻辑;二是使用合适的扩展库对象。至于如何取舍,最终还是取决于业务逻辑的复杂程度和对运行速度的要求这两者之间的平衡。

8.根据运算特点选择最合适的数据类型来提高程序的运行效率。

如果定义一些数据只是用来频繁遍历,最好优先考虑元组或集合。如果需要频繁地测试一个元素是否存在于一个序列中并且不关心其位置,尽量采用字典或集合。列表和元组的in操作的时间复杂度是线性的,而对于集合和字典确是常数级的,与问题规模几乎无关。在所有内置数据类型中,列表的功能最强大,但开销也大,运行速度最慢,应慎重使用。作为建议,应优先考虑使用集合和字典,元组次之,最后再考虑列表和字符串。

9.充分利用关系运算符以及逻辑运算符and和or的惰性求值特点,合理组织条件表达式中多个条件的先后顺序,减少不必要的计算。

10.充分利用生成器对象或类似迭代对象的惰性计算特点,尽量避免将其转换为列表、元组等类型,这样可以减少对内存的占用,减低空间复杂度。

11.减少内循环中的无关计算,尽量往外层提取。

有很多成熟的工具可以检查python代码的规范性,例如 pep8、flake8、pylint等。可以使用pip来安装pep8工具,然后使用命令 pep8 test.py 来检查test.py 文件中python代码的规范性。pep8 常用的可选参数有--show-source、--first、--show-pep8 等。flake8结合了pyflake和 pep8 的特点,可以检查更多的内容,优先推荐使用,使用 pip install flake8 可以直接安装,然后使用命令flake8 test.py 检查 test.py 中代码的规范性。也可以使用 pip 安装 pylint,然后使用命令行工具 pylint 或者可视化工具 pylint-gui 来检查程序的规范性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值