python 带参数的装饰器
from functools import wraps #引用functools下的wraps把__name__,__doc__这些全部偷梁换柱
def deco(x,y): #为装饰器传参
def outer(func): #为inner传func
@wraps(func) #这里wraps需要传func
def inner(*args,**kwargs): #为函数传参数
res = func(*args, **kwargs)
if x+y>5: #参数来判断return 的结果
return res+5
else:
return res+100
return inner
return outer
@deco(2,41)
def orgin_func(name):
'''
打印
:return: 123
'''
print(name,'is 打印')
return 123
res=orgin_func('john')
print(res)
print(orgin_func.__name__) #伪装了__name__,使orgin_func看起来就是自己,而不再是inner
print(orgin_func.__doc__)