要打印的结束参数会导致与 time.sleep 不同的行为



我试图编写这个脚本,它只是在同一行上以一秒的延迟打印数字,但它不起作用。

例如,这有效:

from time import sleep
for n in range(1, 11):
    print(n)
    sleep(1)

但这并没有,程序只是冻结:

from time import sleep
for n in range(1, 11):
    print(n, end="")
    sleep(1)

谁能解释为什么会这样?

程序不会冻结,您只需通过传递flush=True来刷新流:

print(n, end="", flush=True)

sys.stdoutprint默认使用的流是行缓冲的(在交互模式下时(,如文档中所述:

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

这意味着当遇到用于end(n(的默认字符串时,将调用flush。使用其他字符串(即''(不会触发flush,因此您必须使用 flush=True 强制使用它。

最新更新