Python最简编码规范
前言
本文是阅读《Python Coding Rule》之后总结的最为精华及简单的编码规范,根据每个人不同喜好有些地方会有不同的选择,我只是做了对自己来说最简单易行的选择,仅供大家参考。
重要原则
- 保持风格的一致性很重要,但最重要的是:知道何时不一致
- 打破一条既定规则的两个好理由:
- 当应用规则会导致代码可读性下降(可读性赛高)
- 为了和周围代码保持一致而打破规则(历史遗留)
最简规范
- 只使用空格缩进
- 使用UTF-8编码
- 每行只写一条语句
- 使用行末反斜杠折叠长行,限制每行最大79字符
- 导入包:每行唯一、从大到小、绝对路径
- 类内方法空1行分隔,类外空2行分隔
- 运算符除 * 外,两边空1格分隔,函数参数=周围不用空格
- 除类名使用驼峰法以外,其他模块、函数、方法、变量均使用全小写+下划线
- 1个前导下划线表示半公开,2个前导下划线表示私有,与保留字区分使用单个后置下划线
- 开发时使用中文注释,发布时再写英文文档
详细规范
全文通用
- 只使用空格缩进,4个空格表示1个缩进层次
- 每行长度限制在79字符内,使用行末反斜杠折叠长行
- 使用UTF-8编码
- 每行只写一条语句
代码命名
- 一行只import一个包,Imports的顺序为:标准库、相关主包、特定应用,每组导入之间放置1行空行,所有导入使用包的绝对路径
- 分割顶层函数和类的定义使用2行空行,分割类内方法定义使用1行空行,class行与第一个方法定义之间要有1行空行
- 整体使用英文书写方式来使用空格,即仅在逗号、分号后面添加1个空格,其他任何符号如圆括号、方括号、花括号等都不用空格把符号与字符分开,写在一起表示一个整体;运算符除 * 号以外,其他符号两边都各用1个空格分隔;函数参数=号周围不用空格
- 模块名:不含下划线、简短、全小写;类名、异常名:首字母大写单词串的驼峰法;函数名、全局变量名、方法名、实例变量:全小写,加下划线增加可读性;一个前导下划线仅用于不想被导入的全局变量(还有内部函数和类)前加一个下划线)、不打算作为类的公共接口的内部方法和实例变量;两个前导下划线以表示类私有的名字,只用来避免与类(为可以子类化所设计)中的属性发生名字冲突
- 私有属性必须有两个前导下划线,,无后置下划线;非公有属性必须有一个前导下划线,无后置下划线。公共属性没有前导和后置下划线,除非它们与保留字冲突,此情况下,单个后置下划线比前置或混乱的拼写要好,例如:class_优于klass。
编写技巧
- 与None之类的单值比较,永远用:'is'或'is not'来做:
if x is not None
- 在模块和包内定义基异常类(base exception class)
- 使用字符串方法(methods)代替字符串模块
- 在检查前缀或后缀时避免对字符串进行切片,用startswith()和endswith()代替,如:No:
if foo[:3] == 'bar':
Yes:if foo.startswith('bar'):
- 只用isinstance()进行对象类型的比较,如:No:
if type(obj) is type(1):
Yes:if isinstance(obj, int)
- 判断True或False不要用 ==,如:No:
if greeting == True:
Yes:if greeting:
注释
- 开发时,注释全部用中文来写,当要发布脚本工具时,再写英文文档
- 注释应该是是完整的句子(短语也可),首字母大写;如果注释很短,省略末尾句号;注释块由一个or多个完整句子构成的段落组成,则每个句子使用句子结尾;句末句号后使用两个空格
- 注释块每行以#和一个空格开始,并且跟随注释的代码具有相同的缩进层次,注释块上下方有一空行包围
- 谨慎使用行内注释,至少使用两个空格与语句分开
- 使用 pydoc; epydoc; Doxgen 等文档化工具,为所有公共模块、函数、类和方法边写文档字符串,文档字符串对非公开的方法不是必要的,但你应该有一个描述这个方法做什么的注释,这个注释应该在"def"这行后
- 多行文档字符串结尾的""" 应该单独成行
- 版本注记:定义一个变量
__version__ = "$Revision: 1.4 $"
Python最简编码规范的更多相关文章
- 学习笔记之Python最简编码规范
Python最简编码规范 - 机器学习算法与Python学习 https://mp.weixin.qq.com/s/i6MwvC4jYTE6D1KHFgBeoQ https://www.cnblogs ...
- Python 常用 PEP8 编码规范
Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- python的统一编码规范
请注意这一点:没有编码规范的代码没有阅读价值,也更谈不上复用. 目前业界比较流行的Python的编码规范目前主要有PEP8的编程.Google的编码风格.Python Guide和Pocoo Styl ...
- Python PEP 8 编码规范中文版
原文链接:http://legacy.python.org/dev/peps/pep-0008/ 转发链接:https://blog.csdn.net/ratsniper/article/detail ...
- Python第一章-编码规范
Python的基础知识 一.编码规范 PEP8[^ 注] 编码规范 Guido的关键点之一是:代码更多是用来读而不是写.编码规范旨在改善Python代码的可读性. 风格指南强调一致性.项目.模块或函数 ...
- Python基础:编码规范(4)
1.命名规范 Python中不同代码元素采用不同命名方式: ◊ 包名:全部小写字母,中间可以由点分隔开.作为命名空间,包名需具有唯一性. ◊ 模块名:全部小写字母,如果是多个单词构成,使用下划线分隔. ...
- [python]python官方原版编码规范路径
1.进入python官方主页:https://www.python.org/ 2.按如下图进入PEP Index 3.选择第8个,即为python的规范
- Python 常用 PEP8 编码规范和建议
代码布局 缩进 每级缩进用4个空格. 括号中使用垂直隐式缩进或使用悬挂缩进. EXAMPLE: # (垂直隐式缩进)对准左括号 foo = long_function_name(var_one, va ...
- python编码规范
python编码规范 文件及目录规范 文件保存为 utf-8 格式. 程序首行必须为编码声明:# -*- coding:utf-8 -*- 文件名全部小写. 代码风格 空格 设置用空格符替换TAB符. ...
随机推荐
- Java Activiti6.0 spring5 SSM 工作流引擎 审批流程 java项目框架
1.模型管理 :web在线流程设计器.预览流程xml.导出xml.部署流程 2.流程管理 :导入导出流程资源文件.查看流程图.根据流程实例反射出流程模型.激活挂起 3.运行中流程:查看流程信息.当前任 ...
- Spring retry实践
在开发中,重试是一个经常使用的手段.比如MQ发送消息失败,会采取重试手段,比如工程中使用RPC请求外部服务,可能因为网络波动出现超时而采取重试手段......可以看见重试操作是非常常见的一种处理问题, ...
- Mongo DB命令简介
引言 最近在学习MongoDB 总结了一些命令及常用的东西做整理 常用目录文件介绍 mongod 数据库部署命令 mongo 连接mongodb数据库而使用的命令 mongoimport 导入 ...
- [修正] Firemonkey Android 文字斜粗体显示不全的问题
问题:Firemonkey Android 平台显示斜粗体文字时,文字右方会有显示不全的问题. 修正代码: 请将 FMX.FontGlyphs.Android.pas 复制到自己的工程目录下,再修改如 ...
- exynos4412—链接脚本复习
在u-boot下,定义变量, 编译,编译完后 使用arm-linux-nm arm 没有去头的二进制可执行文件 都在BSS段,均为初始化. 打印之后会出算随机值. 目前还处于uboot阶段,如 ...
- 解决$ go get google.golang.org/grpc上的包被墙的问题
今天get grpc包的时候 $ go get google.golang.org/grpc 发现拉不下来被墙了,在github.com上搜索grpc,clone到工程目录中,运行命令 go inst ...
- Button控件双击事件不执行
Button控件双击事件不执行 最近组态组新加入了一位同事,该同事原先是做ASP.NET的,没有做过WindowForm的开发.所以就先安排一个小示例来测验一下.这个示例有些年头了,当年我进入组态开发 ...
- 《Java核心技术36讲》阅读笔记:谈谈对Java平台的理解笔记
1. 谈谈你对Java平台的理解. Java是一种面向对象的语言,最显著的特性有两个方面: 一个就是一次编译,到处运行(Write once, run anywhere),能够非常容易的获得跨平台能力 ...
- dat类型文件入库后校验数据有问题
一.问题: dat或者txt文件入库后,字段进行正则校验报出不应该出现的错误 二.排查: (1)根据报出的错误,把错误日志中的字串单独提取出来,进行正则校验发现没有问题 (2)可以想到,要不是程序问题 ...
- HBase核心功能模块--读书笔记
客户端Client 客户端 Client 是整个 HBase 系统的入口.使用者直接通过客户端操作 HBase.客户端 使用 HBase 的 RPC 机制与 HMaster 和 RegionServe ...