ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[success] # 去掉装饰器的修饰 ~~~ 1. 这种去掉装饰器的修饰只对,在闭包函数内层中加了 wraps 修饰才可以 2. 如果一个函数被多个装饰器修饰,在3.3好用,但在3.3以上的python(目前我用的3.6)只能接触一个装饰器 ~~~ >[danger] ##### 解除装饰器用法 ~~~ 1.在闭包的内层函数加wraps 2.在调用的时候add.__wrapped__(2, 3) 被装饰函数 + __wrapped__ + 被装饰函数参数 ~~~ ~~~ from functools import wraps def decorator1(func): @wraps(func) def wrapper(*args, **kwargs): print('Decorator 1') return func(*args, **kwargs) return wrapper def decorator2(func): @wraps(func) def wrapper(*args, **kwargs): print('Decorator 2') return func(*args, **kwargs) return wrapper @decorator1 @decorator2 def add(x, y): return x + y add(2,3) add.__wrapped__(2, 3) 打印结果: Decorator 1 Decorator 2 Decorator 2 ~~~