簡體   English   中英

為什么打印參數刷新默認為 False?

[英]Why does print argument flush default to False?

我正在使用打印來記錄我的 python 腳本的執行。

我到處都使用flush = True ,否則打印語句有時不會出現在它們被放置的地方。

我想知道為什么默認值是flush = False 誰能解釋一下?

謝謝!

通過默認情況下不強制flush ,您將決定留給您正在寫入的底層對象。 對於sys.stdin / stderr這將默認為行緩沖的_io.TextIOWrapper ,這通常是您在交互式控制台上期望和想要的。 當您為文件交換輸出時,不強制每次打印/寫入flush的默認設置似乎是合理的。 相反,每次打印后強制flush會覆蓋底層對象的緩沖/刷新行為。

明顯的警告是,例如,當您通過tee運行腳本時,進程自己的stdout不會直接寫入終端。


我已經多看了一點,看看是否有任何關於動機的文字證據。 添加flush關鍵字記錄在issue 13761 中 顯然,將stdout默認為True建議是在 2012 年提出的,並被駁回(參見討論的底部)。 我想這就是可以應用 Python 之禪的地方: “特殊情況不足以打破規則。” (沒有特殊待遇只是因為我們正在寫入sys.stdout 。;)

還有一個鏈接到郵件列表中 BDFL 自己聲明:

我可以在 3.3 中向 print() 添加一個新的關鍵字參數來強制刷新,只要它默認為關閉。

暫無
暫無

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

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