在之前的文章中代码检查规则:Java语言案例详解学习了Java的检查规则。我们今天将学习《代码检查规则:Python语言案例详解》,内容主要分为两个部分:Python的代码检查规则和Python编码惯例。

Python代码检查规则的讲解

一套良好的代码检查规则,可以带来代码质量提高,降低缺陷修复和后期维护成本等一系列收益。

Python代码检查规则主要分为四个大类,分别是代码风格规范、引用规范、定义规范和异常处理规范。

代码风格规范
这一大类的规范规则较为繁琐,具体又可细分以下七个小类,共计17条规则:

(1)程序规模规范:
①每行不得超过 120 个字符。
②定义的函数长度不得超过 120 行。
这意味着,在编写代码时,需要时刻注意自己的程序规模,避免冗余,确保写出简洁而高效的代码。

(2)语句规范
因为Python与其他语言不同,可以不需要明确的标识符表示语句的结尾,所以规定:
③禁止以分号结束语句。
④在任何情况下,一行只能写一条语句。

(3)括号使用规范
⑤除非用于明确算术表达式优先级、元组或者隐式行连接,否则尽量避免冗余的括号。

(4)缩进规范
⑥禁止使用Tab进行缩进,而统一使用4个空格进行缩进。

需要将单行内容拆成多行写时规定:
⑦与首行保持对齐;或者首行留空,从第二行起统一缩进4个空格。

(5)空行规范
⑧文件级定义(类或全局函数)之间,相隔两个空行;类方法之间,相隔一个空行。

(6)空格规范
⑨括号之内均不添加空格。
⑩参数列表、索引或切片的左括号前不应加空格。
⑪逗号、分号、冒号之前均不添加空格,而是在它们之后添加一个空格。
⑫所有二元运算符前后各加一个空格。
⑬关键字参数或参数默认值的等号前后不加空格。

(7)注释规范
⑭每个文件都必须有文件声明,每个文件声明至少必须包括以下三个方面的信息:版权声明、功能和用途介绍、修改人及联系方式。

另外在使用文档字符串(docstirng)进行注释时,规定:
⑮使用docstring描述模块、函数、类和类方法接口时,docstring必须用三个双引号括起来。
⑯对外接口部分必须使用docstring描述,内部接口视情况自行决定是否写docstring。
⑰接口的docstring描述内容至少包括以下三个方面的信息:功能简介、参数、返回值。如果可能抛出异常,必须特别注明。

引用规范
引用规范有严格而具体的规定:
①禁止使用 from……import…… 句式直接导入类或函数,而应在导入库后再行调用。
②每行只导入一个库。
③按标准库、第三方库、应用程序自有库的顺序排列import,三个部分之间分别留一个空行。

定义规范
(1)在变量定义方面,我们有强制的规范规定:
①局部变量使用全小写字母,单词间使用下划线分隔。
②定义的全局变量必须写在文件头部。
③常量使用全大写字母,单词间使用下划线分隔

(2)函数的定义规范主要体现在函数的返回值以及默认参数的定义上。
为提高代码可读性,对于函数的返回值,规范要求为:
①函数返回值必须小于或等于3个。若返回值大于3个,则必须通过各种具名的形式进行包装。

为了保障函数的运行效率以及降低后期维护和纠错的成本,对于函数默认参数的定义有如下要求:
②仅可使用以下基本类型的常量或字面常量作为默认参数:整数、bool、浮点数、字符串、None。

(3)类定义的规范包括了四个方面的内容:
①类的命名使用首字母大写的驼峰式命名法。
②对于类定义的成员:protected成员使用单下划线前缀;private成员使用双下划线前缀。
③如果一个类没有基类,必须继承自ovject类。
④类构造函数应尽量简单,不能包含可能失败或过于复杂的操作。
(4)异常处理规范:
在代码编写中应该尽量避免出现代码异常状态,然而错误有时在所难免,对于这些异常状态的处理,有着明确的规范要求:
①禁止使用双参数形式或字符串形式的语法抛出异常。
②如需自定义异常,应在模块内定义名为 Error 的异常基类。并且,该基类必须继承自 Exception 。其他异常均由该基类派生而来。
③除非重新抛出异常,禁止使用 except:语句捕获所有异常, 一般情况下,应使except……:语句捕获具体的异常。
④捕捉异常时,应当使用 as 语法,禁止使用逗号语法。

Python编码惯例

让模块既可被导入又可执行
python不同于编译型语言,而属于脚本语言,是动态的逐行解释运行,没有统一的程序入口。所以,为了方便模块之间的相互导入,我们通常自定义一个 main 函数,并使用一个if 语句, if 内置变量 name == ‘main’ ,在这个if 条件下,再去执行 main函数。这样,我们就能够实现,让模块既可被导入又可执行。

in运算符的使用
in一种简洁而高效的运算符,很多时候,合理的使用in运算符,可以代替大量的重复判断过程,降低时间复杂度,提高代码的运行效率。

不使用临时变量交换两个值
Python有更简洁而高效的语句可以实现交换两个值的操作,并无必要引入临时变量来交换两个值。

用序列构建字符串
对于一个字符串列表、元组等,可以用序列来构建字符串,利用一个空字符串和join函数,就可以避免重复,高效完成相应字符串的构建。

点击进入获得更多技术信息~~

代码检查规则:Python语言案例详解相关推荐

  1. 代码检查规则:Java语言案例详解

    本节课程为<代码检查规则:Java语言案例详解>, 通常情况下Java的代码检查规则可以分为以下十类: 接下来,让我们具体来看看每个分类的内容. 一.源文件规范 该类规范主要从文件名.文件 ...

  2. python语言编程基础-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  3. python语言入门-Python语言入门详解!快速学成Python!

    原标题:Python语言入门详解!快速学成Python! 很多技能是被职场所需要的,但很可惜... 这些技能在大学中并学习不到. 大学和职场现实存在的横沟对大部分同学来说难以跨越或碰得头破血流... ...

  4. python语言入门详解-python初级教程:入门详解

    python初级教程:入门详解 Crifan Li 目录 前言 .................................................................... ...

  5. python语言入门详解-Python unittest详解一(基础入门)

    unittest单元测试框架最初受JUnit启发,与其他语言的主要单元测试框架具有相似的风格. 它支持测试自动化,支持开启或关闭某个测试,支持结合测试.另外它可以生成各个单元测试的报告.为了实现以上功 ...

  6. python 语言, 详解fromstring 函数 -------------从字符串到Ascii 码的转换

    先来个小例子: test = "abcdef" temp = numpy.fromstring(test,dtype=numpy.int8) print(temp) 结果为:[ 9 ...

  7. c语言 数组存放规则,C语言数组详解

    数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来.这些按序排列的同类数据元素的集合称为数组.在C语言中, 数组属于构造数据类型.一个数组可以分解为多个数组元素,这些数组元 ...

  8. python切片输出_Python语言之详解切片

    本篇文章主要讲述Python语言之详解切片,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 切片操作就是对list,元组,字符串进行截取操作有了切片操作,很多地方循环就不再需要了 ...

  9. python traceback_Python语言Traceback详解

    本文主要向大家介绍了Python语言Traceback详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 刚接触Python的时候,简单的异常处理已经可以帮助我们解决大多数问题, ...

最新文章

  1. 【CV】OpenCV(基于Python)学习笔记
  2. Unix进程和线程管理及其异同
  3. 这是我的第一个python程序怎么打-我的第一个Python程序(运行)
  4. kafka-0.10.2.1:Producer生产时无法自动创建Topic
  5. 解决 idea 复制jsp 文件过来页面报404
  6. javacript IO
  7. 桥接模式Bridge
  8. 学科分类号 计算机技术,学科分类号 0806.DOC
  9. 中国园林设备行业市场供需与战略研究报告
  10. PTA 7-6 sdut-oop-5 计算长方体和四棱锥的表面积和体积(类的继承) (10 分) JAVA
  11. CTU Open Contest 2019 J. Beer Vision
  12. 【项目实战】Airbnb爱彼迎-数据分析与建模
  13. android第三方库适配鸿蒙,鸿蒙第三方适配rom
  14. 阿里云服务器安装nodejs
  15. CSS解决hover选择器生硬效果
  16. 手机写python脚本_用Python写王者荣耀刷金币脚本
  17. ubuntu mysql快捷键_ubuntu快捷键设置大全
  18. Unity 使用ContentSizeFitter刷新不及时的问题
  19. 使用poi替换ppt文件内的变量参数,包含ppt和pptx格式
  20. cocos2dx的文章

热门文章

  1. wkwebview html5页面,iOS使用WKWebView加载HTML5不显示屏幕宽度的问题解决
  2. kubesphere服务网格servicemesh(Istio)示例:部署 Bookinfo 和管理流量
  3. openshift介绍及centos7安装单节点openshift、Redhat安装openshift集群完全教程
  4. 使用npm init生成package.json
  5. k8s ingress
  6. Python Django 惰性查询(懒加载)
  7. JAVA中如何确保N个线程可以访问N个资源,但同时又不导致死锁?
  8. JVM 调优实战--使用jstack分析线程执行情况
  9. IDEA 的文件夹的类型说明
  10. 如何使用python效率办公_日常office工作中如何用python提升效率014