python - print 的 end 参数会导致 time.sleep 的不同行为

标签 python python-3.x for-loop time printing

我尝试编写这个脚本,仅在同一行上依次打印数字,延迟一秒,但它不起作用。

这有效:

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 默认使用的流,它是行缓冲的(在交互模式下),如 the documentation 中所述。 :

  • When interactive, standard streams are line-buffered

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

关于python - print 的 end 参数会导致 time.sleep 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093757/

相关文章:

python - 如何从具有特定值的字典中提取随机键?

python - 如何在Python中根据用户输入的任意级别创建多级随机嵌套列表

python-3.x - 如何在 python/pyglet 中正确使用 gluUnProject?

python - 类型错误 : string payload expected: <class 'bytes' >

r - 根据特定列中的数据框条目添加新列的最快方法是什么

Perl 简单循环

python - 将表达式解析为列表

python - 如何在不使用断言的情况下指定函数输入和输出的类型?

python - AIML 和 python3

Python根据条件查找数组中的索引