python 文档字符串中的注释

python comment in docstring

我发现这个是因为我遇到的一些家庭作业问题是由文档字符串测试的,它让我失败了。

例如:

def foo(x):
    """
    >>> foo(5)
    25
    >>> foo(6)
    36  # Are you sure?
    """
    return x**2

if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)

上面的例子失败了:

Expected:
    36  # are you sure?
Got:
    36

我想知道我们是否不应该在文档字符串中添加注释?或者有什么方法可以让 python 忽略 docstring 中的注释?

您可以像下面这样添加您的评论

>>> # comments are ignored

引用https://docs.python.org/3/library/doctest.html

注意:这不能是输出的一部分,因此如果您想添加评论,则可以使用新行来编写您的评论。因此,在您的情况下,“36”行不得包含除输出以外的任何其他字符串。

Doctest 通过从命令行捕获标准输出来工作。测试字符串中提供的文本必须与您的输出完全匹配。 Doctest 无法知道您正在输出什么类型的数据:它只能比较文本输出。在您的情况下,它是一个整数,后跟一条注释,但是如果您改为执行以下操作会怎样:

>>> print('36   # are you sure?')

您想要的任何注释都必须在可执行行中:

>>> foo(6)  # are you sure?
36

这在视觉上可能不那么吸引人,但几乎可以达到相同的目的并且确实有效。当带有注释的行被传递给解释器时,注释被正确处理。