在 Python 中,装饰器是一种特殊的函数,它可以在不修改原有函数代码的情况下,为函数添加额外的功能。装饰器接收一个函数作为参数,并返回一个新的函数,这个新函数通常会在调用原函数之前或之后执行一些额外的操作。
def decorator_function(original_function):
def wrapper_function():
print("Before the function is called.")
original_function()
print("After the function is called.")
return wrapper_function
@decorator_function
def say_hello():
print("Hello!")
if __name__ == '__main__':
say_hello()
原函数:say_hello
在这个例子中,decorator_function
是一个装饰器,它接收 say_hello
函数作为参数,并返回一个新的函数 wrapper_function
。当调用 say_hello
函数时,实际上是在调用 wrapper_function
,这个函数会在调用 say_hello
之前和之后打印一些信息。
第二个例子:
不修改原函数代码而希望对其进行功能扩展,可以使用装饰器来实现
def log_function_call(func):
def wrapper(*args, **kwargs):
print(f"Calling function {func.__name__}")
result = func(*args, **kwargs)
print(f"Function {func.__name__} completed")
return result
return wrapper
@log_function_call
def add_numbers(a, b):
return a + b
result = add_numbers(3, 5)
print(result)
在这个例子中,通过定义装饰器log_function_call
,可以在不修改原函数add_numbers
代码的情况下,为其添加打印函数调用信息的功能。