目录


代码编排

1缩进,4个空格,不用tab键(因为可能不同系统tab的空格数不一定)

2每行最大长度79,换行使用反斜杠,最好用圆括号

3类和top_level函数定义之间空两行;类中的方法之间空一行;函数内逻辑无关的段落之间空一行

二、文档编排

1.模块内容顺序:模块说明和docstring-import-globals&constants-其它定义。其中,import部分按照标准、三方、和自己编写顺序依次排放,之间空一行

2.不要在一句import中多个库

3.采用from xx import xx引用库

三、空格使用

1.右括号前不要空格

2.逗号、冒号、分号前不要空格

3.函数左括号前不要空格

4.序列的左括号前不要空格

5.操作符左右各加一个空格

6.函数默认参数使用赋值符左右省略空格

7.不要将多语句写在一行,尽管“;”允许

8.流程控制语句中,即使执行语句只有一句也必须另起一行

四、注释

1.代码发生变化时,第一件事就是修改注释

2.注释必须是英文,最好是完整的句子,首字母大写,句后要有结束符,结束符后跟两个空格,开始下一行。如果是短语可以省略结束符

3.块注释,在一段代码前增加注释。在#后加一个空格。段落之间只有#的行间隔

4.行注释,少用在一句代码后加注释的方式

5.避免无谓的注释

五、文档描述

为所有的共有模块、函数、类、方法写文档描述;不是共有的则没有必要,但是要写注释

六、命名规范

1尽量单独使用小写字母’i’,大写字母’I’等容易混淆的字母

2模块命名尽量短小,使用全部小写的方式,可以使用下划线

3包命名尽量短小,使用全小写的方式,不可以使用下划线

4 类的命名使用CapWords的方式,模块内部使用的类采用_CapWords的方式。

5 异常命名使用CapWords+Error后缀的方式。

6 全局变量尽量只在模块内有效,类似C语言中的static。实现方法有两种,一是__all__机制;二是前缀一个下划线。

7 函数命名使用全部小写的方式,可以使用下划线。

8 常量命名使用全部大写的方式,可以使用下划线。

9 类的属性(方法和变量)命名使用全部小写的方式,可以使用下划线。

9 类的属性有3种作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public属性前,前缀一条下划线。

11 类的属性若与关键字名字冲突,后缀­_下划线,尽量不要使用缩略等其他方式。

12 为避免与子类属性命名冲突,在类的一些属性前,前缀两条下划线。比如:类Foo中声明__a,访问时,只能通过Foo._Foo__a,避免歧义。如果子类也叫Foo,那就无能为力了。

13 类的方法第一个参数必须是self,而静态方法第一个参数必须是cls。

七 编码建议

1 编码中考虑到其他python实现的效率等问题,比如运算符‘+’在CPython(Python)中效率很高,都是Jython中却非常低,所以应该采用.join()的方式。

2 尽可能使用‘is’‘is not’取代‘==’,比如if x is not None 要优于if x。

3 使用基于类的异常,每个模块或包都有自己的异常类,此异常类继承自Exception。

4 异常中不要使用裸露的except,except后跟具体的exceptions。

5 异常中try的代码尽可能少。比如:

try:

value = collection[key]

except KeyError:

return key_not_found(key)

else:

return handle_value(value)

要优于

try:

# Too broad!

return handle_value(collection[key])

except KeyError:

# Will also catch KeyError raised by handle_value()

return key_not_found(key)

6 使用startswith() and endswith()代替切片进行序列前缀或后缀的检查。比如:

Yes:  if foo.startswith('bar'):优于

No:  if foo[:3] == 'bar':

7 使用isinstance()比较对象的类型。比如

Yes:  if isinstance(obj, int): 优于

No:  if type(obj) is type(1):

8 判断序列空或不空,有如下规则

Yes:  if not seq:

if seq:

优于

No:  if len(seq)

if not len(seq)

9 字符串不要以空格收尾。

10 二进制数据判断使用 if boolvalue的方式。

PEP8规范的更多相关文章

  1. 【转】PEP8 规范

    [转]PEP8 规范 Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 ...

  2. CHENGDU1-Python编程语言和PEP8规范

    CHENGDU1-Python编程语言和PEP8规范 PEP8规范6条? 答:PEP8规范说白了就是一种规范,可以遵守,也可以不遵守,遵守PEP8可以让代码的可读性更高. 代码编排:---缩进,4个空 ...

  3. 【pep8规范】arc diff 不符合 pep 8 规范

    arc land 的时候,arc报错提示代码不符合pep8规范: 1.单行代码过长(括号中的换行不需要加 /) python代码换行加 / https://blog.csdn.net/codechel ...

  4. PEP8规范总结

    PEP8规范总结 代码编排 1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格. 2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的 ...

  5. PEP8 规范

    Python PEP8 编码规范中文版   原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style ...

  6. 编码风格和PEP8规范

    编码风格 错误认知 这很浪费时间 我是个艺术家 所有人都能穿的鞋不会合任何人的脚 我善长制定编码规范 正确认知 促进团队合作 减少bug处理 提高可读性,降低维护成本 有助于代码审查 养成习惯,有助于 ...

  7. Pycharm配置autopep8让Python代码更符合pep8规范

    一.何为pep8? PEP 8官方文档 -- Style Guide for Python Code PEP8中文翻译(转) 二.Pycharm中配置pep8 Pycharm本身是有pep8风格检测的 ...

  8. 复习-PEP8规范(转)

    PEP8 Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换 ...

  9. Python - 部分PEP8规范

    写代码就像写字一样,为什么有的人写的字十分漂亮,而有的人写的字过后连自己都不认识,最主要还是从一开始是否对自己严格要求.从现在开始就当自己是个初学者,把代码写漂亮点.以下截取了部分PEP8代码规范,里 ...

  10. PEP8规范 Python

    前言 从很多地方搬运+总结,以后根据这个标准再将python的一些奇技淫巧结合起来,写出更pythonic的代码~ PEP8 编码规范 英文原版请点击这里 以下是@bobo的整理,原文请见PEP8 P ...

随机推荐

  1. 天虎云商wap和微信话项目总结

    1:架构:以后要采用项目分模块的方式写代码了,不能写一个公用的controller包,每个模块分包,分别建立service,dao,但是模块同级的有个功能的baseDao,        BaseSe ...

  2. Vue命令行工具vue-cli

    前面的话 Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用.该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程.只需几分钟即可创建并启动一个带热重载.保存时静态检查以及可用于生 ...

  3. poj-3080(kmp+暴力枚举)

    题意:给你多个字符串,问你这几个字符串的最长公共子串是哪个,如果有多个,输出字典序最大的那个,如果最长的公共子串长度小于3,输出一个奇怪的东西: 解题思路:首先看数据,数据不大,开始简单快乐的暴力之路 ...

  4. Tyche 2191 WYF的递推式

    题目描述 WYF手中有这样一条递推式 WYF并不是想让你帮他做出结果,事实上,给定一个n,他能够迅速算出Fn.WYF只是想单纯的考验一下读者们. 输入描述 仅一行,三个整数N,F1,P 输出描述 仅一 ...

  5. centos安装桌面,下面的几个包缺一不可

    yum groupinstall “X window system” yum groupinstall “Desktop” yum groupinstall “Chinese Support” 不然的 ...

  6. 第三十四天 UDP协议 并发编程

    一.今日内容 1.UDP协议 2.并发编程 操作系统的发展史 多道技术 进程 线程 IO模型 socketserver 案例:文件上传下载 元类 单例 logging filter 二.TCP半连接池 ...

  7. Nginx 安装与详解

    nginx简介 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用.nginx比它大哥apache性能改 ...

  8. 非阻赛IO模型

    实例一: 只能在waitdata 阶段找到IO的解决方案 from concurrent.futures import ThreadPoolExecutor import socket server ...

  9. Python里的单下划线,双下划线,以及前后都带下划线的意义

    Python里的单下划线,双下划线,以及前后都带下划线的意义: 单下划线如:_name 意思是:不能通过from modules import * 导入,如需导入需要:from modules imp ...

  10. Ajax传递List对象到前台展示问题遇到的坑

    后台Json转换 后台传递的List对象,如果对象是实体类,实体类和另一个表关联,就可能会出现以下错误 org.hibernate.LazyInitializationException: faile ...