python在docstring中的注释

时间:2018-11-02 03:30:00

标签: python-3.x 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中的注释?

2 个答案:

答案 0 :(得分:1)

您可以按如下所示添加评论

>>> # comments are ignored

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

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

答案 1 :(得分:1)

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

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

任何要包含在注释行中的注释:

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

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