文档字符串中的 python 注释

Cod*_*755 6 python docstring python-3.x

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

例如:

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

if __name__ == '__main__':
    import doctest
    doctest.testmod(verbose=True)
Run Code Online (Sandbox Code Playgroud)

上面的示例失败并显示:

Expected:
    36  # are you sure?
Got:
    36
Run Code Online (Sandbox Code Playgroud)

我想知道我们是否不应该在文档字符串中添加注释?或者有没有办法让 python 忽略文档字符串中的注释?

小智 5

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

>>> # comments are ignored
Run Code Online (Sandbox Code Playgroud)

参考https://docs.python.org/3/library/doctest.html

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


Mad*_*ist 5

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

>>> print('36   # are you sure?')
Run Code Online (Sandbox Code Playgroud)

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

>>> foo(6)  # are you sure?
36
Run Code Online (Sandbox Code Playgroud)

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