Python循环输出到控制台

时间:2018-06-11 14:09:36

标签: python

为什么在交互式控制台中输出此代码打印输出?

>>> def a():
...   return 1
...
>>> for i in range(3):
...   a()
...
1
1
1
>>>

我希望没有输出。这种行为记录在哪里?

3 个答案:

答案 0 :(得分:5)

在交互模式下,任何表达式语句的结果都是打印,如果它不是None。如doc中所述。

  

使用表达式语句(主要是交互式)来计算和写入值[...]

     

在交互模式下,如果值不是None,则转换为a   使用内置repr()函数的字符串,结果字符串是   写入标准输出

示例:

>>> 1 + 1
2
>>> a()
1
>>> None # This expression is not printed
>>>

对于循环中的表达式语句也是如此。

>>> for i in range(3):
>>>     a()
1
1
1

虽然这是特定于交互式shell的。如果您将代码作为脚本运行,则不会打印任何内容。

答案 1 :(得分:4)

如果使用控制台/交互式提示符/ IDLE / shell / Python shell / potato,则会打印返回的值,并且不需要print()。这就是为什么你可以在shell中执行>>> 1+1而它会说2,即使你创建了一个1+1的程序,它也会运行而没有错误或输出。

还有一点细节:没有打印值,repr是。这就是shell发生这种情况的原因:

>>> print("something")
something
>>> "something"
"something"
>>> 'a string with "quotes"'
'a string with "quotes"'

您可以对此进行快速测试:

>>> class Test:
...     def __str__(self): return "str"
...     def __repr__(self): return "repr"

>>> test_instance = Test()
>>> test_instance
repr
>>> print(test_instance)
str

答案 2 :(得分:3)

记录此行为here;您正在以交互模式运行Python shell。

注意,下面引用后代:

  

所有错误消息都写入标准错误流;执行命令的正常输出写入标准输出