contextlib
contextmanager
通过 yield 关键字将生成器函数包装成上下文管理器
Example
import time
from contextlib import contextmanager
@contextmanager
def timeit_context(tag: str | None = None):
if tag is None:
tag = "timeit_context"
if not tag.startswith("timeit_context"):
tag = f"timeit_context - {timeit_context}"
try:
start_time = time.perf_counter()
yield
finally:
end_time = time.perf_counter()
process_time = end_time - start_time
print(f"{tag} - {process_time:.2f}")
with timeit_context():
time.sleep(1)
suppress
在上下文中忽视指定的异常
Example
import contextlib
with contextlib.suppress(RuntimeError):
raise RuntimeError