之所以找到这一点,是因为我遇到的一些家庭作业问题已通过文档字符串进行了测试,这使我失败了。
例如:
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中的注释?
答案 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
这也许在视觉上不那么吸引人,但实际上达到了相同的目的并且有效。当带有注释的行传递到解释器时,注释将被正确处理。