Python代码注释规范代码实例解析


Posted in Python onAugust 14, 2020

一、代码注释介绍

  • 注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。
  • 注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。
  • 在有处理逻辑的代码中,源程序有效注释量必须在20%以上。

二、代码注释分类

行注释:在符号后那一行不会被编译(显示)

块注释:被块注释符号中间的部分不会被编译

三、python代码注释基础

Python中使用#表示单行注释。单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或表达式之后。如下例子:

name = 'xiaohong' # 单行注释

# 单行注释
name = 'xiaohong'

Python中使用三个单引号或三个双引号表示多行注释。用在注释多写不下的情况,如下例子:

'''
这是使用三个单引号的多行注释
'''

"""
这是使用三个双引号的多行注释
"""

四、DocStrings介绍与使用

4.1 DocStrings介绍

文档字符串

是一个重要工具,用于解释文档程序,帮助你的程序文档更加简单易懂

4.2 python中使用DocStrings

在函数体的第一行使用一对三个单引号 ''' 或者一对三个双引号 """ 来定义文档字符串。你可以使用 doc(注意双下划线)调用函数中的文档字符串属性。

编写示例如下:

def add(num1,num2):
  """ 完成传入的两个数之和

  :param num1: 加数1
  :param num2: 加数2
  :return: 和
  """
  return num1 + num2

print( add.__doc__ )

备注:DocStrings 文档字符串使用惯例:它的首行简述函数功能,第二行空行,第三行为函数的具体描述。

五、DocStrings常用编写风格

5.1 reST风格

这是现在流行的一种风格,reST风格,Sphinx的御用格式,比较紧凑。

"""
This is a reST style.

:param param1: this is a first param
:param param2: this is a second param
:returns: this is a description of what is returned
:raises keyError: raises an exception
"""

5.2 Google风格

"""
This is a groups style docs.

Parameters:
 param1 - this is the first param
 param2 - this is a second param

Returns:
 This is a description of what is returned

Raises:
 KeyError - raises an exception
"""

5.3 Numpydoc (Numpy风格)

"""
My numpydoc description of a kind
of very exhautive numpydoc format docstring.

Parameters
----------
first : array_like
 the 1st param name `first`
second :
 the 2nd param
third : {'value', 'other'}, optional
 the 3rd param, by default 'value'

Returns
-------
string
 a value in a string

Raises
------
KeyError
 when a key error
OtherError
 when an other error
"""

六、一些注释经验

  • 注释不是越多越好。对于一目了然的代码,不需要添加注释。
  • 对于复杂的操作,应该在操作开始前写上相应的注释。
  • 对于不是一目了然的代码,应该在代码之后添加注释。
  • 绝对不要描述代码。一般阅读代码的人都了解Python的语法,只是不知道代码要干什么

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python进程通信之匿名管道实例讲解
Apr 11 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
PyQt5每天必学之事件与信号
Apr 20 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
PySide和PyQt加载ui文件的两种方法
Feb 27 Python
解决python3 requests headers参数不能有中文的问题
Aug 21 Python
python垃圾回收机制(GC)原理解析
Dec 30 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
对Keras中predict()方法和predict_classes()方法的区别说明
Jun 09 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
Python实现打乒乓小游戏
Sep 25 Python
Python发送邮件实现基础解析
Aug 14 #Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 #Python
Python编写memcached启动脚本代码实例
Aug 14 #Python
Python自动巡检H3C交换机实现过程解析
Aug 14 #Python
基于python调用jenkins-cli实现快速发布
Aug 14 #Python
使用tensorflow进行音乐类型的分类
Aug 14 #Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 #Python
You might like
无线电的诞生过程
2021/03/01 无线电
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
PHP的可变变量名的使用方法分享
2012/02/05 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
php中require和require_once的区别说明
2014/02/27 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python中 map()函数的用法详解
2018/07/10 Python
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
浅谈amaze-ui中datepicker和datetimepicker注意的几点
2020/08/21 HTML / CSS
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
Java中实现多态的机制
2015/08/09 面试题
extern是什么意思
2016/03/10 面试题
工业自动化专业毕业生推荐信
2013/11/18 职场文书
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
煤矿班组长岗位职责
2013/12/29 职场文书
百度吧主申请感言
2014/01/12 职场文书
大学生咖啡店创业计划书
2014/01/21 职场文书
求职意向书
2014/07/29 职场文书
简短清晨问候语
2015/11/10 职场文书
SpringBoot整合RabbitMQ的5种模式实战
2021/08/02 Java/Android