簡體   English   中英

打印的end參數導致time.sleep的行為不同

[英]end argument to print leads to different behavior with 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.stdout (默認情況下, print使用的流)是行緩沖的(處於交互模式時),如文檔所述

  • 交互式時,標准流是行緩沖的

這意味着,當遇到用於end\\n )的默認字符串時,將進行flush 使用其他字符串(即'' )不會觸發flush因此您必須使用flush=True強制執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM