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”行不得包含除输出之外的任何其他字符串。
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)
这也许在视觉上不那么吸引人,但几乎具有相同的目的并且确实有效。当带有注释的行传递给解释器时,注释会被正确处理。
归档时间: |
|
查看次数: |
1272 次 |
最近记录: |