print()函数仅在python 3中的for循环完成后才执行

Ton*_*Joe 2 printing loops python-3.x

我想使用for循环在同一行中显示序列号,这就是我所做的:

for i in range(10):
    sleep(1)
    print(i, end=" ")
Run Code Online (Sandbox Code Playgroud)

这应该在for循环的每次迭代中依次打印数字(0、1、2,...,10),而程序将等待直到循环结束,然后立即打印所有数字。

我不明白为什么会这样,有人知道导致这种行为的原因是什么,谢谢?

Mar*_*ers 5

stdout的行被缓冲;这意味着它会在遇到换行符之前不显示文本。您需要显式刷新缓冲区:

for i in range(10):
    sleep(1)
    print(i, end=" ", flush=True)
Run Code Online (Sandbox Code Playgroud)

print()功能文档中

输出是否被缓冲通常由file决定,但是如果flush关键字参数为true,则将强制刷新流。

来自sys.stdout

交互式时,标准流是行缓冲的。