我无法理解的Python打印行为

Shi*_*pak 2 python printing

我的代码片段如下所示:

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
Run Code Online (Sandbox Code Playgroud)

表现不同的

print status
Run Code Online (Sandbox Code Playgroud)

print status,
Run Code Online (Sandbox Code Playgroud)

现在,当我后使用逗号print status,然后print输出到一次标准输出.最后一次,循环迭代之后即在那里,当我不把那个逗号后print status,然后print输出每个被调用时到stdout(因为我希望它).

我不明白下面发生了什么.谁能解释一下.谢谢 :)

mou*_*uad 5

控制台终端是行缓冲的,这意味着控制台缓冲区将在它找到一个新的行字符时被刷新\n,它解释了你现在看到的行为,因为当你print status打印时会自动打印一个新的行字符,它将刷新打印后的控制台缓冲区,但是当您执行print status,打印时,不会添加新行,因此打印后不会刷新缓冲区.

这是一篇关于缓冲的好文章希望它可以给你更多的见解:)