```python3 def fn(old): def new_fun(*args, **kwargs): print("开始装饰") result = old(*args, **kwargs) print("装饰结束") return result return new_fun @fn def say_hello(): print("大家好~~~") say_hello() ``` 窗口程序中的应用 ```python3 import traceback def run_with_exc(f): """窗口运行出现错误时,用messagebox把错误信息显示出来""" def call(window, *args, **kwargs): try: return f(window, *args, **kwargs) except Exception: exc_info = traceback.format_exc() QMessageBox.about(window, '错误信息', exc_info) return call class GomokuWindow(QMainWindow): @run_with_exc def paintEvent(self, e): ``` 带参数的三层装饰器 ```python3 def timmer_out(flag): def timmer(func): def inner(*args, **kwargs): if flag: start = time.time() ret = func(*args, **kwargs) end = time.time() print(end-start) return ret else: ret = func(*args, **kwargs) return ret return inner return timmer ``` |
|
来自: 昵称66738188 > 《待分类》