【问题标题】:Blank line before the return statement in a Python functionPython函数中return语句前的空行
【发布时间】:2018-03-07 12:15:06
【问题描述】:

我找不到任何关于在返回之前使用空行的 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)中哪些是常见做法?如果在 return 语句之前涉及 if-else 块或循环,是否会发生任何变化?

【问题讨论】:

  • 没有通用的做法。我更喜欢在 return 语句之前有空行,其他人可能不喜欢。遵循您正在处理的项目的约定,如果是新项目,请坚持您的约定。
  • 来自PEP8:“在函数中谨慎地使用空行来表示逻辑部分。”。正如 Maroun 所说,这取决于个人喜好或项目惯例。对我来说是个案决定;在像你这样的小函数中,我通常不会在 return 语句之前留下空行。
  • 关于文档字符串后的空行参见PEP 257中的示例:没有空行。

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


【解决方案1】:

returns 和空行没有通用做法(至少我在 PEP 样式中看到 None)。

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

文档字符串前后都没有空行。

还有:

在所有文档字符串(单行或多行)之后插入一个空行记录一个类——一般来说,类的方法由一个空行相互分隔,并且文档字符串需要从第一个方法偏移一个空行。

(强调我的)

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

正如PEP8 所说:

风格指南是关于一致性的。与本风格指南保持一致很重要。项目内部的一致性更为重要。一个模块或功能内的一致性是最重要的。

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

在函数中谨慎地使用空行来表示逻辑部分

(强调我的)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2015-12-04
    • 2014-02-02
    • 2014-06-25
    • 1970-01-01
    • 2020-02-16
    • 2019-06-08
    • 2013-10-12
    相关资源
    最近更新 更多