Python函数中return语句之前的空白行

ute*_*ngr 6 python pep8 python-2.7 python-3.x

在返回之前,我找不到任何使用空白行的PEP引用,因此想知道什么是惯例。

范例A1:

def add(a,b):
    """ docstrings"""
    a = a + 2
    b = b + 2
    c = a +b
    return c
Run Code Online (Sandbox Code Playgroud)

范例A2:

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

    return c
Run Code Online (Sandbox Code Playgroud)

范例B1:

def add(a,b):
    """ docstrings"""
    if a > b:
       c = a + b
    else:
       c = a -b
    return c
Run Code Online (Sandbox Code Playgroud)

范例B2:

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

    return c
Run Code Online (Sandbox Code Playgroud)

范例C1:

def add(a):
    """ docstrings"""
    for i in range(3):
       a = a + i
    return a
Run Code Online (Sandbox Code Playgroud)

范例C2:

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

    return a
Run Code Online (Sandbox Code Playgroud)

在这些用例(A,B,C)中,哪些是惯例?如果在return语句之前包含if-else或循环块,是否有任何变化?

MSe*_*ert 5

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

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

在文档字符串之前或之后没有空白行。

但是也:

记录一个类的所有文档字符串(单行或多行)之后插入一个空行-通常来说,该类的方法彼此之间用一条空行隔开,并且该文档字符串需要与第一个方法偏移用空白行。

(强调我的)

我经常看到循环后的空行,有时也看到循环前的空行,return但这取决于函数/循环的长度。通常,决定一种样式(如果没有现有的约定)并坚持下去通常更为重要。

正如PEP8所说:

样式指南是关于一致性的。与该样式指南的一致性很重要。项目内的一致性更为重要。一个模块或功能内的一致性是最重要的。

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

使用空行的功能,节制,以表示逻辑部分

(强调我的)