《Python Enhancement Proposal #8》(8号Python增强提案)又叫PEP8,它是针对Python代码格式而编订的风格指南。

尽管可以在保证语法正确的前提下随意编写Python代码,但是,采用一致的风格来书写可以让代码更加易懂、更加易读。

采用和其他Python程序员相同的风格来写代码,可以使项目更利于多人协作。

即便代码只会由你自己阅读,遵循这套风格也依然可以令后续的修改变得容易一些。

PEP8列出了许多细节,以描述如何撰写清晰的Python代码。它会随着Python语言持续更新。下面列出几条应该绝对遵守的规则:

1.空白:Python中的空白(whitespace)会影响代码的含义。python程序员使用空白的时候尤其在意,因为它们会影响代码代码的清晰程度。

(1)使用space(空格)来表示缩进,而不要用tab(制表符)。

  为什么不建议用tab键,因为tab键和space键不能混用,这样格式检测时会直接报语法错误。

(2)和语法相关的每一层缩进都用4个空格来表示。

(3)每行的字符数不应超过79

(4)对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别之上再加上4个空格。

(5)文件中的函数与类之间应该用两个空行隔开

(6)在同一个类中,各方法之间应该用一个空行隔开

(7)在使用下标来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格。

(8)为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只写一个就好。

2.命名:PEP8提倡采用不同的命名风格来编写Python代码中的各个部分,以便在阅读代码时可以根据这些名称看出它们在Python语言中的角色。

(1)函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连,例如,lowercase_underscore。

(2)受保护的实例属性,应该以单个下划线开头,例如,_leading_underscore。

(3)私有的实例属性,应该以两个下划线开头,例如,__double_leading_underscore。

(4)类与异常,应该以每个单词首字母均大写的形式来命名,例如,CapitailzedWord。

(5)模块级别的常量,应该全部采用大写字母来拼写,各单词之间以下划线相连,例如,ALL_CAPS

(6)类中的实例方法(instance method),应该把首个参数命名为self,以表示该对象自身。

(7)类方法(class method)的首个参数,应该命名为cls,以表示该类自身。

3.表达式和语句:《The Zen of Python》(Python之禅)中说:每件事都应该有直白的做法,而且最好只有一种。PEP8在制定表达式和语句的风格时,就试着体现了这种思想。

(1)采用内联形式的否定词,而不要把否定词放在整个表达式的前面,例如,应该写if a is not b而不是if not a is b。

(2)不要通过检测长度的方法(例如if len(somelist) == 0)来判断somelist是否为[]或等空值,

  而是应该采用if not somelist这种写法来判断,它会假定:空值将自动评估为False。

(3)检测somelist是否为[]或‘hi’等非空值,也应如此,if somelist语句会默认把非空值判断为True。

(4)不要编写单行的if语句、for循环、while循环及expect复合语句,而是应该把这些语句分成多行来书写,以示清晰。

(5)import语句应该总是放在文件开头。

(6)引入模块的时候,总是应该使用绝对名称,而不应该根据当前模块的路径来使用相对名称。

  例如,引入bar包中的foo模块时,应该完整的写出from bar import foo,而不是应该简写为import foo。

(7)如果一定要以相对名称来编写import语句,那就采用明确的写法:from.import foo。

(8)文件中的那些import语句应该按顺序划分成三部分,分别表示标准库模块、第三方模块以及自用模块。

  在每一部分中,各import语句应该按模块的字母顺序来排列。

拓展:Pylint(http://www.pylint.org)是一款流行的Python源码静态分析工具。它可以自动检查受测代码是否符合PEP8风格指南,而且还能找出Python程序里的多种常见错误。

  后面一章会介绍这个软件的使用。

 文章摘抄于Brett Slatkin的《编写高质量Python代码的59个有效方法》,仅作为个人学习使用,如有侵权请告知,将及时删除,如果觉得有益,请购买原版书籍,知识需要传递和支持,谢谢。 

第2条:遵循PEP8风格指南的更多相关文章

  1. 遵循PEP8风格指南

    整理来自 effective python 一 空白 1 使用space来标识缩进,而不是tab 2 和语法相关的每层缩进都使用4个空格 3 每行的字符数不应该超过79 4 对于多行的表达式,除了首行 ...

  2. 遵循PEP8风格

    遵循PEP8风格 在编写python代码的时候我们应该采用统一的风格来编写代码,可以使代码更加容易读懂.采用和其他程序员统一的编码风格来写代码,也可以使项目更利于多人协作开发.即便代码只有你自己能看懂 ...

  3. python的PEP8 代码风格指南

    PEP8 代码风格指南 这篇文章原文实际上来自于这里:https://www.python.org/dev/peps/pep-0008/ 知识点 代码排版 字符串引号 表达式和语句中的空格 注释 版本 ...

  4. python代码风格指南:pep8 中文翻译

    摘要 本文给出主Python版本标准库的编码约定.CPython的C代码风格参见​PEP7.本文和​PEP 257 文档字符串标准改编自Guido最初的<Python Style Guide&g ...

  5. Python PEP-8编码风格指南中文版

    #PEP 8 – Python编码风格指南 PEP: 8 Title: Style Guide for Python Code Author: Guido van Rossum , Barry War ...

  6. python代码风格指南:pep8 中文版

    本文档所提供的编码规范,适用于主要的Python发行版中组成标准库的Python代码.请参阅PEP关于Python的C实现的C编码风格指南的描述. 本文档和PEP257(文档字符串规范)改编自Guid ...

  7. PEP8中文版 -- Python编码风格指南

    Python部落组织翻译, 禁止转载 目录      缩进      制表符还是空格?      行的最大长度      空行      源文件编码      导入      无法忍受的      其 ...

  8. Python 编码风格指南

    原文:http://python.jobbole.com/84618/ 本文超出 PEP8 的范畴以涵盖我认为优秀的 Python 风格.本文虽然坚持己见,却不偏执.不仅仅涉及语法.模块布局等问题,同 ...

  9. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

随机推荐

  1. Appium Android Bootstrap源代码分析之简单介绍

    在上一个系列中我们分析了UiAutomator的核心源代码,对UiAutomator是怎么执行的原理有了根本的了解.今天我们会開始另外一个在安卓平台上基于UiAutomator的新起之秀--Appiu ...

  2. UltraISO 9.6.5.3237

    注册信息: 用户名:Guanjiu 注册码:A06C-83A7-701D-6CFC

  3. 【Java】Java_19递归算法

    1.递归算法 A方法调用B方法,我们很容易理解!递归就是:A方法调用A方法!就是自己调用自己,因此我们在设计递归算法时,一定要指明什么时候自己不调用自己.否则,就是个死循环! 1.1递归算法要点 递归 ...

  4. 在 Linux 系统下使用 PhotoRec & TestDisk 工具来恢复文件

    当你在系统中有意或无意地使用 shift + delete 组合键.删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁. 它仅仅是从系统的目录结构中 ...

  5. [译] ContentEditable 那些好的、坏的和坑

    译者注 我的上一篇译文 “[译] 通过 contentEditable 属性创建一个所见即所得的编辑器” 的原文 “Create a WYSIWYG Editor With the contentEd ...

  6. Selenium3.14.1+Python安装和第一个Demo

    言简意赅的说下Selenium是什么 Selenium是前台测试框架,支持IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome等浏览器,我只 ...

  7. angularjs事件传递$on、$emit和$broadcast

    如何在作用域之间通信呢? 1.创建一个单例服务,然后通过这个服务处理所有子作用域的通信. 2.通过作用域中的事件处理通信.但是这种方法有一些限制:例如,你并不能广泛的将事件传播到所有监控的作用域中.你 ...

  8. 一家O2O社区App公司的随笔

    近两年,O20是业内最火爆的关键词之一,去年拿到1亿天使投资的叮咚小区都引起了各方的关注. 一个月之前我入职了一家以做O2O社区产品的创业公司,此文会把这段时间和后边所见所想都写出来,总结创业公司和创 ...

  9. [ERROR] Error generating R.java from manifest

    把*.js文件用记事本打开,再保存为utf-8的编码覆盖,把build文件夹的文件删掉,启动.可以运行了.(在这之前试过把jdk的几个文件考到平台工具下的动作)

  10. Y2K Accounting Bug - 2586

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11271   Accepted: 5672 Description Ac ...