34

我找不到任何有关此详细信息的 PEP 参考。函数定义后必须有一个空行吗?

我应该这样做:

def hello_function():
    return 'hello'

或者我应该这样做:

def hello_function():

    return 'hello'

当使用文档字符串时,同样的问题也适用:

这:

def hello_function():
    """
    Important function
    """
    return 'hello'

或这个

def hello_function():
    """
    Important function
    """

    return 'hello'

编辑

正如 FoxMaSk 所评论的那样,这就是 PEP 在空白行上所说的内容,但它没有说明这个细节。

空行

用两个空行分隔顶级函数和类定义。

类中的方法定义由一个空行分隔。

可以(谨慎地)使用额外的空白行来分隔相关功能组。在一堆相关的单行代码(例如一组虚拟实现)之间可以省略空行。

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

Python 接受 control-L(即 ^L)换页符作为空格;许多工具将这些字符视为页面分隔符,因此您可以使用它们来分隔文件相关部分的页面。请注意,一些编辑器和基于 Web 的代码查看器可能无法将 control-L 识别为换页符,并且会在其位置显示另一个字形。

4

4 回答 4

44

阅读文档字符串约定

它说即使功能非常明显,您也必须编写单行文档字符串。它说:

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

所以我会编写类似的代码

def hello_function():
    """Return 'hello' string."""
    return 'hello'
于 2013-09-20T10:19:44.193 回答
28

正如@moliware 所指出的,Docstring Conventions状态,在One-line Docstrings下:

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

但是,它还说(在Multi-line Docstrings下):

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

我对这一切的解释:空行不应该在任何文档字符串之前,并且应该只在一个类的文档字符串之后。

于 2016-01-15T19:49:39.010 回答
1

项目使用不同的文档字符串约定。

例如,pandas 文档字符串指南明确要求您将三引号单独放在一行中。

文档字符串必须用三个双引号定义。文档字符串前后不应有空行。文本从开引号后的下一行开始。结束引号有自己的行(意味着它们不在最后一句的末尾)。

于 2020-04-02T12:26:59.250 回答
0

使 python 脚本同时遵守pydocstyle并且pycodestyle是一个挑战。但是有一件非常有帮助的事情是,在您的文档字符串中,将第一行作为函数或类的摘要写在 79 个字符内,包括.. 这样您就可以遵守 PEP 257(根据pydocstyle)在不间断行的末尾有一个句点和 PEP 8 的 79 个字符限制(根据pycodestyle)。

然后在留下一个空行之后(因为使用你的 coditor 的新行快捷方式比手动按下更好enter)你可以写任何你想要的东西,当时只关注pycodestyle比哪个更容易pydocstyle,主要原因是我们对 line 的理解由于缩进设置、制表符设置、我们使用的各种代码编辑器中的行设置,缩进与系统理解的完全不同。因此,通过这种方式,您将拥有TODO理解pycodestyle并可以纠正的方式,而不是把头撞在墙上pydocstyle TODOs。

于 2021-11-20T02:43:30.817 回答