如何使用装饰器来定义装饰器的返回值?
def my_decorator(func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
return result + 10
return wrapper
@my_decorator
def my_function():
return 10
print(my_function())
运行代码:
12
解释:
-
my_decorator
定义了一个装饰器,名为wrapper
。 -
wrapper
函数接收func
作为参数,并返回一个新的函数。 - 新函数的
__name__
属性设置为wrapper
,以便在调用装饰器之前调用。 -
wrapper
函数在调用func
时执行装饰操作,并返回func
的结果加 10。 -
my_function
被装饰,因此它使用my_decorator
来创建装饰器。 - 当
my_function
被调用时,它调用wrapper
函数,并返回10
。 - 由于
wrapper
的返回值是10
,因此my_function
的返回值为12
。
注意:
- 装饰器的返回值必须是可用的。
- 装饰器可以返回任何类型的值。
- 装饰器可以修改函数的返回值类型。