8

python如何对评论的缩进做出反应?

def foo():
    """
    Random comment
    """
    return True

有效,但是:

def foo():
"""
Random comment
"""
    return True

不起作用,抛出 IndentationError。

对我来说似乎很奇怪,因为评论不应该只是评论。顺便说一句,这有效:

def foo():
# Another random comment
    return True
4

2 回答 2

14

三重引号字符串不是注释;它是方法的文档字符串。foo.__doc__例如,您可以稍后访问它,或者使用help(foo). 三重引号 ( """or ''') 是一种特定于 python 的方法,用于指定不需要转义换行符的字符串文字。

因此,它是函数主体的一部分,因此需要缩进以匹配。事实上,作为函数的第一条语句出现的任何字符串都被视为文档字符串,单引号也可以。同样的技巧也适用于类和模块。

很多工具都可以使用这个文档字符串;例如,您可以在此信息中嵌入doctest 测试。有关格式化此字符串的约定,请参阅PEP 257

另一方面,注释总是用 a 表示#(不是字符串文字的一部分),并且直到行尾都被忽略。如果包含的所有行都是注释,则将忽略整行,就像只有空格的行一样。请参阅有关评论的文档

于 2012-08-08T07:55:18.240 回答
2

三引号字符串不是注释,它是字符串文字。您的代码不会以任何方式分配或使用它,但它仍然是一个常规字符串,并且必须符合 Python 的语法。(在这种情况下,它恰好是文档字符串,但这与缩进是否重要无关。)

#是获得评论的方式。

于 2012-08-08T07:55:19.513 回答