点此查看原文

Introduction 介绍

本文档给出了Python代码的编码约定,这些代码包含在主要Python发行版中的标准库 。 请参阅附带的信息PEP,它描述了Python C实现中的C代码的样式指南 [1]. 。

本文档和 PEP 257 改编自Guido的原作《Python Style Guide essay》,从Barry的样式指南附加了一些补充 [2]

这种风格指南随着时间的推移而发展,因为语言本身的变化确定了其他约定,并且使过去的约定变得过时。

许多项目有它们自己的代码样式规范。倘若发生任何冲突, 此类特定于项目的指南优先于该项目 。

愚蠢的固执是小心眼的妖怪

Guido的一个重要见解是,代码的读取比编写的频率高得多。 这里提供的指南旨在提高代码的可读性,并使其在各种Python代码中保持一致。 正如 PEP 20  所说,“可读性很重要”。

风格指南是关于一致性的。与此样式指南保持一致很重要。项目内部的一致性更重要。一个模块或函数内的一致性是最重要的。

但是,要知道什么时候是不一致的——有时候风格指南的建议并不适用,当你怀疑的时候,运用你最好的判断。看看其他的例子,然后决定什么看起来最好。别犹豫,尽管问!

特别是:不要为了遵从这个PEP而破坏向后兼容性!

忽略特定指导原则的其他一些好理由:

  1. 当使用指导原则使得代码可读性降低,甚至对于习惯阅读遵循此PEP的代码的人也是如此。
  2. 与周围破坏它的代码保持一致(可能出于历史原因) –尽管这也是一个清理其他人混乱的机会(在真正的XP风格中)。
  3. 因为所讨论的代码早于指南的引入 ,没有其他的原因修改代码。
  4. 当代码需要与不支持样式指南推荐的功能的旧版本Python保持兼容时。

代码布局

缩进

每个缩进级别使用4个空格。

延续行应该使用Python的隐式行垂直对齐封装的元素,这些行在圆括号、方括号和大括号中连接,或者使用悬挂缩进[7]
使用悬挂缩进时,应考虑以下几点:
第一行不应该有参数,应该使用进一步的缩进来清楚地将自己区分为延续行。

正确示例

# Aligned with opening delimiter.
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# Add 4 spaces (an extra level of indentation) to distinguish arguments from the rest.
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

# Hanging indents should add a level.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)

对于延续行,4个空格规则是可选的。

# Hanging indents *may* be indented to other than 4 spaces.
foo = long_function_name(
  var_one, var_two,
  var_three, var_four)

发表回复