Python函数中返回语句之前的空行

时间:2017-09-26 10:12:09

标签: python python-2.7 python-3.x pep8

我在返回之前找不到任何PEP参考空白行的使用,所以想知道什么是常用做法。

示例A1:

def add(a,b):
    """ docstrings"""
    a = a + 2
    b = b + 2
    c = a +b
    return c

示例A2:

def add(a,b):
    """ docstrings"""
    a = a + 2
    b = b + 2
    c = a +b

    return c

示例B1:

def add(a,b):
    """ docstrings"""
    if a > b:
       c = a + b
    else:
       c = a -b
    return c

示例B2:

def add(a,b):
    """ docstrings"""
    if a > b:
       c = a + b
    else:
       c = a -b

    return c

示例C1:

def add(a):
    """ docstrings"""
    for i in range(3):
       a = a + i
    return a

示例C2:

def add(a):
    """ docstrings"""
    for i in range(3):
       a = a + i

    return a

这些用例(A,B,C)中的常见做法是什么?在返回语句之前涉及if-else或循环块时是否会发生任何变化?

1 个答案:

答案 0 :(得分:2)

对于return和空白行,没有通常的做法(至少我在样式PEP中看过没有)。

但是有一个关于空白行和文档字符串(请参阅PEP 257):

  

在docstring之前或之后没有空白行。

但是:

  

在记录类的所有文档字符串(单行或多行)之后插入一个空行 - 一般来说,该类的方法通过一个空行彼此分隔,并且docstring需要通过空行从第一个方法偏移。

(强调我的)

我经常在循环之后看到空行,有时候在return之前也会出现空白行,但这取决于函数/循环的长度。决定一种风格(如果没有现有惯例)并坚持下去通常更为重要。

正如PEP8所说:

  

风格指南是关于一致性的。与此风格指南的一致性非常重要。项目的一致性更为重要。一个模块或函数内的一致性是最重要的。

然而,重要的是PEP8建议谨慎使用空白行并分隔逻辑部分(我认为这不是“返回”的逻辑部分,而是YMMV):

  

在功能中使用空白行保留,以指示逻辑部分

(强调我的)