装饰器在Python中的应用:理解和创建简单示例
装饰器是Python中一种强大的特性,它允许我们在不改变函数原有行为的前提下,为函数添加额外的功能。
下面通过几个简单的示例来理解装饰器的工作原理:
- 定义基本装饰器:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
- 使用类装饰器:
class LoggingDecorator:
def __init__(self, func):
self.func = func
self.log_msg = f"Executing function {func.__name__}}"
def __call__(self, *args, **kwargs):
print(self.log_msg)
result = self.func(*args, **kwargs))
print(self.log_msg + " Function returned value: ", result)
return result
@LoggingDecorator
def say_hello(name="World"):
print(f"Hello, {name}!")
say_hello()
在这个例子中,我们定义了一个类LoggingDecorator
,它通过继承和重写方法来实现装饰功能。__call__
方法使得当我们调用被装饰的函数时,会自动执行装饰器中的逻辑。
还没有评论,来说两句吧...