pep 8 规范的一些记录
一、pep8起源
龟叔创立Python的初衷里就有创立一个容易阅读的编程语言,所以亲自操刀写了pep8 代码规范,每个项目开始前都要有一个共识,就是自己的代码规范,pep8 就是一个很好的范本。
二、官网链接
https://www.python.org/dev/peps/pep-0008/
中文翻译链接
https://my.oschina.net/u/1433482/blog/464444
三、重要总结
一致性问题:
风格指南强调一致性。项目、模块或函数保持一致都很重要。
当遵循指南降低代码一致性,可读性的时候就不必强行修改。
代码布局:
缩进四个空格代替tab
行宽79个字符,文本长块72个字符
字符编码总是用UTF-8
导入模块:
导入时单行导入,开头导入,
顺序为标准库,本地库,第三方库,
尽量使用绝对路径,不用通配符导入,
空格:
括号内没有空格,
关键字参数和默认值参数的前后不要加空格
逗号,分号,冒号前无空格
运算符后有空格,
不推荐复合语句,一句一行
用英文写注释,及时更新注释,少用行内注释,文档字符串:为所有公共模块、函数、类和方法书写
命名:
最重要的原则
用户可见的API命名应遵循使用约定而不是实现。(不太明白)
命名风格
b(单个小写字母)
B(单个大写字母)
lowercase(小写串)
lower_case_with_underscores(带下划线的小写)
UPPERCASE(大写串)
UPPER_CASE_WITH_UNDERSCORES(带下划线的大写串)
CapitalizedWords(首字母大写的单词串或驼峰缩写)注意: 使用大写缩写时,缩写使用大写字母更好。故 HTTPServerError 比 HttpServerError 更好。
mixedCase(混合大小写,第一个单词是小写)
Capitalized_Words_With_Underscores(带下划线,首字母大写,丑陋)
首尾有下划线的情况:
_single_leading_underscore:(单前置下划线): 弱内部使用标志。 例如"from M import " 不会导入以下划线开头的对象。
single_trailing_underscore_(单后置下划线): 用于避免与 Python关键词的冲突。 例如:
Tkinter.Toplevel(master, class_='ClassName')
__double_leading_underscore(双前置下划线): 当用于命名类属性,会触发名字重整。 (在类FooBar中,__boo变成 _FooBar__boo)。
__double_leading_and_trailing_underscore__(双前后下划线):用户名字空间的魔法对象或属性。例如:__init__ , __import__ or __file__,不要自己发明这样的名字。
命名约定规范
避免采用的名字
决不要用字符'l'(小写字母el),'O'(大写字母oh),或 'I'(大写字母eye) 作为单个字符的变量名。一些字体中,这些字符不能与数字1和0区别。用'L' 代替'l'时。
包和模块名
模块名要简短,全部用小写字母,可使用下划线以提高可读性。包名和模块名类似,但不推荐使用下划线。
模块名对应到文件名,有些文件系统不区分大小写且截短长名字,在 Unix上不是问题,但当把代码迁移到 Mac、Windows 或 DOS 上时,就可能是个问题。当然随着系统的演进,这个问题已经不是经常出现。
另外有些模块底层用C或C++ 书写,并有对应的高层Python模块,C/C++模块名有一个前置下划线 (如:_socket)。
类名
遵循CapWord。
接口需要文档化并且可以调用时,可能使用函数的命名规则。
注意大部分内置的名字是单个单词(或两个),CapWord只适用于异常名称和内置的常量。
异常名
如果确实是错误,需要在类名添加后缀 "Error"。
全局变量名
变量尽量只用于模块内部,约定类似函数。
对设计为通过 "from M import " 来使用的模块,应采用 __all__ 机制来防止导入全局变量;或者为全局变量加一个前置下划线。
函数名
函数名应该为小写,必要时可用下划线分隔单词以增加可读性。 mixedCase(混合大小写)仅被允许用于兼容性考虑(如: threading.py)。
函数和方法的参数
实例方法第一个参数是 'self'。
类方法第一个参数是 'cls'。
如果函数的参数名与保留关键字冲突,通常在参数名后加一个下划线。
方法名和实例变量
同函数命名规则。
非公开方法和实例变量增加一个前置下划线。
为避免与子类命名冲突,采用两个前置下划线来触发重整。类Foo属性名为__a, 不能以 Foo.__a访问。(执著的用户还是可以通过Foo._Foo__a。) 通常双前置下划线仅被用来避免与基类的属性发生命名冲突。
常量
常量通常在模块级定义,由大写字母用下划线分隔组成。比如括MAX_OVERFLOW和TOTAL。
继承设计
考虑类的方法和实例变量(统称为属性)是否公开。如果有疑问,选择不公开;把其改为公开比把公开属性改为非公开要容易。
公开属性可供所有人使用,并通常向后兼容。非公开属性不给第三方使用、可变甚至被移除。
这里不使用术语"private", Python中没有属性是真正私有的。
另一类属性是子类API(在其他语言中通常称为 "protected")。 一些类被设计为基类,可以扩展和修改。
谨记这些Python指南:
公开属性应该没有前导下划线。
如果公开属性名和保留关键字冲突,可以添加后置下划线
简单的公开数据属性,最好只公开属性名,没有复杂的访问/修改方法,python的Property提供了很好的封装方法。 d.如果不希望子类使用的属性,考虑用两个前置下划线(没有后置下划线)命名。
公共和内部接口
任何向后兼容的保证只适用于公共接口。
文档化的接口通常是公共的,除非明说明是临时的或为内部接口、其他所有接口默认是内部的。
为了更好地支持内省,模块要在__all__属性列出公共API。
内部接口要有前置下划线。
如果命名空间(包、模块或类)是内部的,里面的接口也是内部的。
导入名称应视为实现细节。其他模块不能间接访名字,除非在模块的API文档中明确记载,如os.path中或包的__init__暴露了子模块。
pep 8 规范的一些记录的更多相关文章
- 【pep8规范】arc diff 不符合 pep 8 规范
arc land 的时候,arc报错提示代码不符合pep8规范: 1.单行代码过长(括号中的换行不需要加 /) python代码换行加 / https://blog.csdn.net/codechel ...
- 关于设置MX记录
简介:正确设置MX(Mail Exchanger)邮件交换记录是企业电子邮件服务稳定运行的基本条件,我们经常发现很多企业电子邮箱管理员因为设置了不符合规范的MX记录,导致重要的外部邮件退回或者丢失. ...
- 9天C#转Java学习过程,自己记录一下
其实没有完整的9天,就是连续每天花点时间,过程so frustrated,踩坑无数...下面是学习过程的记录 第1天 开始正式学习JavaEE,已完成: 1. Tomcat安装: 2. Tomcat配 ...
- git 分支命名规范
为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作. 主要规范两点: git 分支命名规范 git 提交记录规范 1. git 分支命名规范 git 分支 ...
- 代码规范V1.1
作业要求:[https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/993] 代码规范文档/代码规范执行记录:[https://coding. ...
- JSR 规范目录
JSR 规范目录 一.Servlet 规范 1.1 Servlet 2.x 规范 1.2 Servlet 3.x 规范 - 注解和异步请求规范 每天用心记录一点点.内容也许不重要,但习惯很重要!
- Python规范:提高可读性
PEP 8 规范 PEP 是 Python Enhancement Proposal 的缩写,翻译过来叫"Python 增强规范". 缩进规范 PEP 8 规范告诉我们,请选择四个 ...
- java中包名命名规范
在idea中创建package遇到的问题 发现一个问题,当我创建一个lesson-02的package时,输入这个包名后,package自动变成了文件夹 在网上搜索发下java包名一般是小写字母进行命 ...
- 零基础学Python--------第2章 Python语言基础
第2章 Python语言基础 2.1 Python语法特点 2.11注释 在Python中,通常包括3种类型的注释,分别是单行注释.多行注释和中文编码声明注释. 1.单行注释 在Python中,使用 ...
随机推荐
- Django_上传图片和模版获取图片
需求: 在Django中,上传图片,存入数据库中的文件的路径,而不是图片本身,也就是说,图片等数据静态文件都可以放到第三方服务器上,我想在把图片保存到Django本地项目中,并可以通过Django自带 ...
- python 爬取B站视频弹幕信息
获取B站视频弹幕,相对来说很简单,需要用到的知识点有requests.re两个库.requests用来获得网页信息,re正则匹配获取你需要的信息,当然还有其他的方法,例如Xpath.进入你所观看的视频 ...
- 自己写的一个tomcat发布脚本
闲来无事,就自己写一个shell脚本,方便自己以后在服务器上部署tomcat下的项目.我本地用maven打包,然后每次都要人工去切换一堆堆目录,有点繁琐,所以我写了下面的shell脚本. #! /bi ...
- linkin大话面向对象--抽象类
abstract [非private访问修饰符] 返回值类型 方法名称(参数列表); 当编写一个类时,我们往往会为该类定义一些方法,这些方法时用来描述该类的行为方式,那么这些方法都有具体的方法体. 但 ...
- ORACLE SQL脚本能否修改字段名称?
在看到标题时,你先想想:在ORACLE中能否修改一个表的某个字段名呢?如果能的话,你是否还记得SQL脚本如何写的呢,呵呵,写这个的目的是因为在论坛上看见许多信誓旦旦的说ORACLE中不能修改字段名称, ...
- struts2 action 页面与action参数的传递的三种方式
第一种: 初始页面: <form action="LoginAction.action" method="post"> 用户名:<input ...
- shell第一篇
前两天不停的再看内核相关的内容,了解内核的形成.内核的执行流程.内核的作用,结果是舍近求远. 其实我只是想了解一下shell的工作,shell与内核有关,但并不需要我么真正去做什么,至少对于我这样额初 ...
- 【转】vim取消高亮显示
vim是vi的加强版. 进入vim或编辑完毕按esc后,输入/可帮助查找字符串,例如/main帮助查找main函数,找到的main高亮显示. 取消高量显示的两个办法: 1)按esc键,输入:nohl ...
- openstack一键安装脚本(转载)
#!/bin/sh # openstack pike 单机 一键安装 # 环境 centos 7.4.1708 x86_64 # 更多内容 http://dwz.cn/openstack # Myde ...
- 19_Python元组总结
元组 1 元组:不可变的容器,一旦初始化就不能更改,有索引:可以查,不能增,改,删除单个元素:可遍历,不能排序 2 当元组元素,只有一个的时候,需要在元素后加",",否则回当()运 ...