python装饰带参数 python装饰器不带参数 代码案例
# 1.装饰器不带参数 (注意 这里是装饰器不带参数 不是装饰器修饰的函数不带参数)
# 如下所示装饰器接收方法名, 方法中的参数传给内部函数wrapper
def logging(func):
def wrapper(a,b):
print("执行了 装饰器内部函数1")
print(a,b)
return func(a,b)
return wrapper
@logging
def add(a,b):
print(a+b)
#2.装饰器带参数
#下面的例子只是展示了可以带参的代码,实际的应用场景没有展示,只是在socketio中遇到了, sio.on的装饰器是带参的 可以根据装饰器中的参数来确定调用的函数
def log(text):
def logging(func):
def wrapper(a,b):
print("执行了 装饰器内部函数2", text)
return func(a,b)
return wrapper
return logging
@log('+')
def add2(a,b):
print(a+b)
@log('-')
def diff(a,b):
print(a-b)
if __name__ == '__main__':
diff(1,2)