Ultima attività 10 months ago

這段 Python 程式碼 使用 contextlib.contextmanager 來建立一個 自訂的上下文管理器 (ic_disabled()),用於 暫時停用 icecream (ic) 的輸出,並在 離開上下文後復原原始狀態。

Revisione a9db21e35a5f9bc4ce806ee0b5476473ee4ce679

ic_context.py Raw
1# 引用python內建模組contextlib中的contextmanager
2from contextlib import contextmanager
3
4# 將icecream模組簡稱為ic
5from icecream import ic # 引用icecream模組
6
7# 設定icecream的輸出選項,包含上下文
8ic.configureOutput(includeContext=True)
9
10# 定義ic_disabled函式為一個上下文管理器
11@contextmanager
12def ic_disabled():
13 # 將ic.enabled的原始值存入_enabled
14 _enabled = ic.enabled
15 # 將ic.enabled設為False,關閉ic()的輸出
16 ic.enabled = False
17 # 使用yield來暫時執行代碼區塊內的程式
18 yield
19 # 離開代碼區塊後,將ic.enabled恢復原始值
20 ic.enabled = _enabled
21
22ic(42) # 會輸出: ic| 42: 42
23
24with ic_disabled():
25 ic("這段程式不會印出") # `ic()` 被停用,不會顯示輸出
26
27ic("這段程式會印出") # `ic()` 被恢復,會輸出: ic| "這段程式會印出": 這段程式會印出
28