《编写高质量Python代码的59个有效方法》——第2条:遵循PEP 8风格指南

简介:

本节书摘来自华章社区《编写高质量Python代码的59个有效方法》一书中的第2条:遵循PEP 8风格指南,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章节内容可以访问云栖社区“华章社区”公众号查看

第2条:遵循PEP 8风格指南
《Python Enhancement Proposal #8》(8号Python增强提案)又叫PEP 8,它是针对Python代码格式而编订的风格指南。尽管可以在保证语法正确的前提下随意编写Python代码,但是,采用一致的风格来书写可以令代码更加易懂、更加易读。采用和其他Python程序员相同的风格来写代码,也可以使项目更利于多人协作。即便代码只会由你自己阅读,遵循这套风格也依然可以令后续的修改变得容易一些。
PEP 8列出了许多细节,以描述如何撰写清晰的Python代码。它会随着Python语言持续更新。大家应该把整份指南都读一遍(http://www.python.org/dev/peps/pep-0008)。下面列出几条绝对应该遵守的规则。
空白:Python中的空白(whitespace)会影响代码的含义。Python程序员使用空白的时候尤其在意,因为它们还会影响代码的清晰程度。
使用space(空格)来表示缩进,而不要用tab(制表符)。
和语法相关的每一层缩进都用4个空格来表示。
每行的字符数不应超过79。
对于占据多行的长表达式来说,除了首行之外的其余各行都应该在通常的缩进级别之上再加4个空格。
文件中的函数与类之间应该用两个空行隔开。
在同一个类中,各方法之间应该用一个空行隔开。
在使用下标来获取列表元素、调用函数或给关键字参数赋值的时候,不要在两旁添加空格。
为变量赋值的时候,赋值符号的左侧和右侧应该各自写上一个空格,而且只写一个就好。
命名:PEP 8提倡采用不同的命名风格来编写Python代码中的各个部分,以便在阅读代码时可以根据这些名称看出它们在Python语言中的角色。
函数、变量及属性应该用小写字母来拼写,各单词之间以下划线相连,例如,lowercase_underscore。
受保护的实例属性,应该以单个下划线开头,例如,_leading_underscore。
私有的实例属性,应该以两个下划线开头,例如,__double_leading_underscore。
类与异常,应该以每个单词首字母均大写的形式来命名,例如,CapitalizedWord。
模块级别的常量,应该全部采用大写字母来拼写,各单词之间以下划线相连,例如,ALL_CAPS。
类中的实例方法(instance method),应该把首个参数命名为self,以表示该对象自身。
类方法(class method)的首个参数,应该命名为cls,以表示该类自身。
表达式和语句:《The Zen of Python》(Python之禅)中说:“每件事都应该有直白的做法,而且最好只有一种。”PEP 8在制定表达式和语句的风格时,就试着体现了这种思想。
采用内联形式的否定词,而不要把否定词放在整个表达式的前面,例如,应该写if a is not b而不是if not a is b。
不要通过检测长度的办法(如if len(somelist) == 0)来判断somelist是否为[]或''等空值,而是应该采用if not somelist这种写法来判断,它会假定:空值将自动评估为False。
检测somelist是否为[1]或'hi'等非空值时,也应如此,if somelist语句默认会把非空的值判断为True。
不要编写单行的if语句、for循环、while循环及except复合语句,而是应该把这些语句分成多行来书写,以示清晰。
import语句应该总是放在文件开头。
引入模块的时候,总是应该使用绝对名称,而不应该根据当前模块的路径来使用相对名称。例如,引入bar包中的foo模块时,应该完整地写出from bar import foo,而不应该简写为import foo。
如果一定要以相对名称来编写import语句,那就采用明确的写法:from.import foo。
文件中的那些import语句应该按顺序划分成三个部分,分别表示标准库模块、第三方模块以及自用模块。在每一部分之中,各import语句应该按模块的字母顺序来排列。
Pylint(http://www.pylint.org/)是一款流行的Python源码静态分析工具。它可以自动检查受测代码是否符合PEP 8风格指南,而且还能找出Python程序里的多种常见错误。
要点
当编写Python代码时,总是应该遵循PEP 8风格指南。
与广大Python开发者采用同一套代码风格,可以使项目更利于多人协作。
采用一致的风格来编写代码,可以令后续的修改工作变得更为容易。

相关文章
|
23天前
|
机器学习/深度学习 算法 安全
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
【PSO-LSTM】基于PSO优化LSTM网络的电力负荷预测(Python代码实现)
|
26天前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
|
26天前
|
供应链 新能源 调度
微电网调度(风、光、储能、电网交互)(Matlab&Python代码实现)
微电网调度(风、光、储能、电网交互)(Matlab&Python代码实现)
|
21天前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
147 92
|
25天前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
|
22天前
|
运维 算法 新能源
基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
基于风光储能和需求响应的微电网日前经济调度(Python代码实现)
|
23天前
|
机器学习/深度学习 算法 调度
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
|
25天前
|
机器学习/深度学习 算法 调度
【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)
|
人工智能 数据挖掘 数据处理
揭秘Python编程之美:从基础到进阶的代码实践之旅
【9月更文挑战第14天】本文将带领读者深入探索Python编程语言的魅力所在。通过简明扼要的示例,我们将揭示Python如何简化复杂问题,提升编程效率。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编码世界的大门。让我们开始这段充满智慧和乐趣的Python编程之旅吧!

热门文章

最新文章

推荐镜像

更多