当前位置: 首页 > news >正文

python 平均值_Python随笔11:Python代码规范之注释和文档

引言:每天习以为常的Python代码,是否符合Python的规范?想写出Pytonic风格的代码,却不知道如何开始?

这个“Python代码规范”系列将会解决这些规范性的问题。

注:本代码规范基于PEP8, 在PEP8的基础上做了一些改动。

05cee5b59ec58a0a5c494effa614ac3c.png

Python代码规范

注释和文档

代码注释和文档(docstring)的规范,参考并综合了PEP257、Google Python Style Guide和Numpy的文档标准。

注释

  • 单行注释和多行注释,请参考Python随笔10:Python代码规范之简明概述。
  • 在代码的关键部分(或比较复杂的地方),能写注释的要尽量写注释。
  • 比较重要的注释段,使用多个等号隔开,可以更加醒目,突出重要性。
app = create_app(name, options)# =====================================# 请勿在此处添加 get post等app路由行为 !!!# =====================================if __name__ == '__main__': app.run()

文档注释(Docstring)

作为文档的Docstring一般出现在模块头部、函数和类的头部,这样在python中可以通过对象的doc对象获取文档。编辑器和IDE也可以根据Docstring给出自动提示。

  • 文档注释以 """ 开头和结尾,首行不换行,如有多行,末行必需换行,以下是Google的docstring风格示例:
# -*- coding: utf-8 -*-"""Example docstrings.This module demonstrates documentation as specified by the `Google PythonStyle Guide`_. Docstrings may extend over multiple lines. Sections are createdwith a section header and a colon followed by a block of indented text.Example: Examples can be given using either the ``Example`` or ``Examples`` sections. Sections support any reStructuredText formatting, including literal blocks:: $ python example_google.pySection breaks are created by resuming unindented text. Section breaksare also implicitly created anytime a new section starts."""
  • 不要在文档注释复制函数定义原型,而是具体描述其具体内容,解释具体参数和返回值等:
# 不推荐的写法(不要写函数原型等废话)def function(a, b): """function(a, b) -> list""" ... ...# 正确的写法def function(a, b): """计算并返回a到b范围内数据的平均值""" ... ...
  • 对函数参数、返回值等的说明采用numpy标准,如下所示:
def func(arg1, arg2): """在这里写函数的一句话总结(如: 计算平均值). 这里是具体描述. 参数 ---------- arg1 : int arg1的具体描述 arg2 : int arg2的具体描述 返回值 ------- int 返回值的具体描述 参看 -------- otherfunc : 其它关联函数等... 示例 -------- 示例使用doctest格式, 在`>>>`后的代码可以被文档测试工具作为测试用例自动运行 >>> a=[1,2,3] >>> print [x + 3 for x in a] [4, 5, 6] """
  • 文档注释不限于中英文,但不要中英文混用。
  • 文档注释不是越长越好,通常一两句话能把情况说清楚即可。
  • 模块、公有类、公有方法,能写文档注释的,应该尽量写文档注释。

To be continued.

相关文章:

  • 心中无敌,天下无敌——转“赢在中国”主持人王利芬的博客片断
  • qt qmidarea 关闭事件_Qt摄像头热插拔实现
  • ogm 转 avi
  • windows桌面待办事项_桌面图标快满屏?你居然不知道这4款神器能帮你整理!
  • python贪婪匹配顺序_python正则表达式的懒惰匹配和贪婪匹配说明
  • 不值一驳
  • 世界上最美丽的语言python_你如何理解“世界上最美丽的语言是微笑”,要求是一篇3分钟的即兴评述,...
  • C++箴言:避免析构函数调用虚函数
  • sql 比较两个时间_73找到业务高峰时段的sql示例(报表开发类)
  • 与全局变量构造析构顺序有关的一道面试题(C++)
  • sql 让每行显示两次_SQL基础-复杂查询
  • 关于Symbian的程序已经关闭错误
  • led灯条维修_格栅屏和普通屏的区别?LED格栅屏是如何防水的
  • 时间条控件制作简明教程
  • python asyncio socket_用python asyncio写一个MMO(2)
  • [译]Python中的类属性与实例属性的区别
  • 【翻译】babel对TC39装饰器草案的实现
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 10个最佳ES6特性 ES7与ES8的特性
  • Angular 响应式表单 基础例子
  • Asm.js的简单介绍
  • egg(89)--egg之redis的发布和订阅
  • go append函数以及写入
  • Java读取Properties文件的六种方法
  • MySQL数据库运维之数据恢复
  • PAT A1092
  • Redux系列x:源码分析
  • spring cloud gateway 源码解析(4)跨域问题处理
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Vue2 SSR 的优化之旅
  • 测试如何在敏捷团队中工作?
  • 记录一下第一次使用npm
  • 前端js -- this指向总结。
  • 通过git安装npm私有模块
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 一个JAVA程序员成长之路分享
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • #HarmonyOS:Web组件的使用
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (ibm)Java 语言的 XPath API
  • (ZT)一个美国文科博士的YardLife
  • (笔试题)分解质因式
  • (层次遍历)104. 二叉树的最大深度
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (一)Java算法:二分查找
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)关于多人操作数据的处理策略
  • (转)我也是一只IT小小鸟