首頁 >後端開發 >Python教學 >如何使用上下文管理器捕獲 Python 函數的輸出?

如何使用上下文管理器捕獲 Python 函數的輸出?

Barbara Streisand
Barbara Streisand原創
2024-11-01 14:57:29262瀏覽

How Can I Capture the Output of a Python Function Using a Context Manager?

將stdout 重定向到捕獲函數輸出

這個問題解決了從Python 函數捕獲stdout 輸出的需要,即do_something(my_object) ,它會修改物件並一路列印統計資料。

為了實現這一點,我們提出了一個上下文管理器類別 Capturing。此類別提供兩個關鍵函數:

  • __enter__():將 stdout 重新導向到內部緩衝區。
  • __exit__():將 stdout 還原到其原始目標並將捕獲的輸出附加到類別的列表屬性。

上下文管理器的使用很簡單:

<code class="python">with Capturing() as output:
    do_something(my_object)</code>

此時,輸出變數將包含 do_something() 列印的行列表。

此外,值得注意的是,這種技術可以多次使用來捕獲不同函數呼叫的輸出。結果將連接在同一個輸出列表中。

當呼叫的函數無法修改以傳回所需資訊時,此方法特別有用。

以上是如何使用上下文管理器捕獲 Python 函數的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn