
import time def my_contextmanager(generator_func): # 这个自动生成的类才是真正的上下文管理器 class _ContextManager: def __init__(self, *args, **kwargs): # 这里面存的生成器对象只是内部执行工具 self.gen generator_func(*args, **kwargs) def __enter__(self): return next(self.gen) def __exit__(self, exc_type, exc_val, exc_tb): # 异常处理、唤醒生成器执行收尾逻辑 ... return _ContextManager my_contextmanager def timer(): print(开始计时) start time.time() try: yield finally: cost time.time() - start print(f执行耗时{cost:.4f}秒) # 测试 with timer(): print(执行函数)