Python PEP 8 代码风格指南

0. 引言

Python增强提案#8,也称作 PEP 8,是关于如何格式化Python代码的风格指南。

你可以按自己的方式编写Python代码,只要符合有效的语法规则。

然而,使用一致的风格可以让你的代码更易于理解和阅读。

与更广泛的Python程序员社区共享统一的代码风格,有利于项目协作。

即便你是唯一阅读自己代码的人,遵守代码风格指南也会让以后的修改更加容易,并有助于避免许多常见错误。

PEP 8 提供了大量有关如何编写清晰Python代码的细节。

随着Python语言的发展,它也会不断更新。阅读一下在线的完整指南https://www.python.org/dev/peps/pep-0008/是值得的。这里有一些你应该确保遵循的规则。

1. 空白字符

在Python中,空白字符在语法上是有意义的。Python程序员对空白字符对代码清晰度的影响特别敏感。请遵循以下有关空白字符的指导原则:

  • 使用空格而不是制表符进行缩进。

  • 每一级语法上有意义的缩进使用四个空格。

  • 每行字符数不超过79个字符。

  • 长表达式换行续行时,应比正常缩进级别多缩进四个空格。

  • 文件中,函数和类应该用两个空行隔开。

  • 类中,方法之间应该用一个空行隔开。

  • 在字典中,键和冒号之间不加空格,如果值在同一行,则在值之前加一个空格。

  • 在变量赋值中,等号前后各留一个空格。

  • 对于类型注解,确保变量名和冒号之间没有空格,并在类型信息前加一个空格。

2. 命名

PEP 8 为语言中的不同部分建议了独特的命名风格。这些约定使得在阅读代码时很容易区分每个名称所对应的类型。请遵循以下有关命名的指导原则:

  • 函数、变量和属性应该使用小写单词加下划线的格式。

  • 受保护的实例属性应该使用以单下划线开头的格式。

  • 私有实例属性应该使用以双下划线开头的格式。

  • 类(包括异常)应该使用大写驼峰式命名。

  • 模块级常量应该使用全大写格式。

  • 类的实例方法应该将第一个参数命名为self,它引用该对象。

  • 类方法应该将第一个参数命名为cls,它引用该类。

3. 表达式和语句

Python之禅阐述:"应该有且仅有一种明确的方法来完成它。"PEP 8试图将这一风格规范编码为表达式和语句的指导原则:

  • 使用内联否定(if a is not b)而不是否定肯定表达式(if not a is b)。

  • 不要通过将长度与零进行比较(if len(somelist) == 0)来检查是否为空容器或序列(例如[]或’')。使用if not somelist,假设空值将被隐式计算为False。

  • 对于非空容器或序列(如[1]或’hi’)也是如此。如果somelist是非空值,则隐式为True。

  • 避免使用单行if语句、for和while循环以及except复合语句。将它们分布在多行以提高清晰度。

  • 如果无法将表达式写在一行,请用括号将其括起来,并添加换行和缩进以提高可读性。

  • 比起使用\换行符续行,更推荐将多行表达式用括号括起来。

4. 导入

PEP 8建议一些关于如何导入模块以及在代码中使用它们的指导原则:

  • 总是在文件顶部写入import语句(包括from x import y)。

  • 导入模块时始终使用绝对名称,而不是相对于当前模块自身路径的名称。例如,要从bar包中导入foo模块,应使用from bar import foo,而不是仅import foo。

  • 如果你必须进行相对导入,请使用显式语法from . import foo。

  • 导入应该按以下顺序分节:标准库模块、第三方模块、自己的模块。每个子部分应按字母顺序排列导入。

5. Pylint工具

Pylint工具(https://www.pylint.org)是一种流行的Python源代码静态分析器。Pylint提供了自动执行PEP8风格指南并检测Python程序中许多其他常见错误的功能。许多IDE和编辑器也包含了类似的lint工具或支持此类插件。

6. 要点总结

✦编写Python代码时请始终遵循Python增强提案#8 (PEP 8)风格指南。

✦与更广泛的Python社区共享统一的风格有利于与他人协作。

✦使用一致的风格可以让以后修改自己的代码更容易。

完成!

相关推荐

  1. Python PEP 8 代码风格指南

    2024-03-21 22:22:03       40 阅读
  2. C++代码风格指南--Google(未完待续)

    2024-03-21 22:22:03       46 阅读
  3. FreeCAD的代码风格

    2024-03-21 22:22:03       37 阅读
  4. Google HTML/CSS 风格指南

    2024-03-21 22:22:03       28 阅读
  5. 【LVGL v8.3】修改 ARC 控件指针图片风格

    2024-03-21 22:22:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 22:22:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 22:22:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 22:22:03       87 阅读
  4. Python语言-面向对象

    2024-03-21 22:22:03       96 阅读

热门阅读

  1. Python电子邮件自动化实战案例

    2024-03-21 22:22:03       34 阅读
  2. 每日一题 第二十期 洛谷 烤鸡

    2024-03-21 22:22:03       45 阅读
  3. 如何让自己的前端知识更全面

    2024-03-21 22:22:03       38 阅读
  4. DAY6 作业 串口控制三盏灯亮灭

    2024-03-21 22:22:03       41 阅读
  5. 多数据源 - dynamic-datasource | 进阶 - 数据库加密

    2024-03-21 22:22:03       42 阅读