假设我们有以下的模块模块函数:
def module_function():
return "Hello, World!"
现在我们希望包装这个模块函数,使其返回值变为大写。我们可以使用装饰器来实现:
def uppercase_decorator(func):
def wrapper():
original_result = func()
modified_result = original_result.upper()
return modified_result
return wrapper
@uppercase_decorator
def module_function():
return "Hello, World!"
这里uppercase_decorator
是一个装饰器函数,它接受一个函数作为参数,并返回一个新的函数wrapper
。这个新函数是原来函数的包装函数,它在调用原函数之后修改其返回结果为大写形式。
我们应用这个装饰器到module_function
上,从而得到一个新的包装函数。现在调用这个包装函数,就会得到改变后的结果:
>>> module_function()
'HELLO, WORLD!'
此时module_function()
实际调用的是wrapper()
函数。
通过这种方法,我们可以轻松包装模块函数,并改变它们的返回结果。