我的代码片段是这样的:
from time import sleep
for i in xrange(10):
status = "hello%s" % str(i)
status = status + chr(8)*(len(status)+1)
sleep(1)
print status
它的行为与
不同print status
和
print status,
现在,当我在 print status
之后使用逗号时,print
只会输出一次到 stdout。即在循环最后一次迭代之后,当我不在 print status
之后放置那个逗号时,每次调用它时 print
输出到 stdout(因为我期待它)。
我不明白下面发生了什么。谁能解释一下。谢谢:)
最佳答案
控制台终端是行缓冲的,这意味着控制台缓冲区将在发现新行字符\n 时刷新,这解释了您现在看到的行为,因为当您执行 print status
print 将自动打印一个新行字符,这将在 print 之后刷新控制台缓冲区,但是当您执行 print status,
时,print 不会添加新行,因此缓冲区不会在打印。
这是一个good article关于缓冲希望它能给你更多的洞察力:)
关于python - 我无法理解的 Python 打印行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203415/