为什么分号不能抑制doctest中的输出?

时间:2019-04-29 22:41:10

标签: python doctest

为什么分号不抑制doctest中的输出?一种解决方法是分配结果,但是我很好奇为什么这不起作用。

"""
>>> 1+1;     # Semicolons typically suppress output, but this fails
>>> x = 1+1  # Workaround: assign result to suppress output.
"""
Failed example:
    1+1;
Expected nothing
Got:
    2

2 个答案:

答案 0 :(得分:4)

与其他语言(如C / C ++)不同,分号是Python语句的可选终止符,如下面的Repl所示:

Python 3.6.5 |Anaconda custom (64-bit)| (default, Mar 29 2018, 13:32:41) [MSC v
1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 1 + 1;
2
>>> 1 + 1
2

但是,在IPython中您可能会观察到不同的行为:

In [120]: 1 + 1;

In [121]: 1 + 1
Out[121]: 2

IPython的docs建议使用分号来禁止输出。但是,此行为仅特定于IPython,并没有以任何方式扩展到Python或其标准库(例如doctest)。

答案 1 :(得分:3)

您正在考虑MATLAB或IPython之类的东西。 Python分号通常不会抑制任何内容。 doctest模拟普通的交互式Python会话,而不是IPython会话,因此分号不执行任何操作。