python 修饰器使用方式
Python修饰器是一种特殊的函数,可以用来修改、装饰其他函数,以增强其功能。使用修饰器可以方便地对函数进行扩展,而不需要修改函数本身的代码。下面介绍Python修饰器的使用方式:
- 定义修饰器函数
修饰器函数是一个普通的Python函数,它接收一个函数作为参数,并返回一个新的函数。修饰器函数通常使用@符号来标识,将其放在需要装饰的函数之前。
例如,下面是一个简单的修饰器函数,用来打印函数的执行时间:
import time
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Time taken: {end_time - start_time:.6f} seconds")
return result
return wrapper
- 使用修饰器
使用修饰器只需要在需要装饰的函数之前,添加修饰器函数的名称,使用@符号进行标识。
例如,下面是一个需要装饰的函数,用来计算两个数的和:
def add_numbers(a, b):
return a + b
使用修饰器对其进行装饰,代码如下:
@timer
def add_numbers(a, b):
return a + b
这样就完成了对函数的装饰,每次调用add_numbers函数时,都会自动执行timer修饰器函数,打印出函数的执行时间。
- 多个修饰器的使用
Python允许使用多个修饰器对一个函数进行装饰,这样可以实现更加复杂的功能。
例如,下面是一个同时使用两个修饰器的示例:
def timer(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Time taken: {end_time - start_time:.6f} seconds")
return result
return wrapper
def logger(func):
def wrapper(*args, **kwargs):
print(f"Calling function '{func.__name__}' with arguments: {args}, {kwargs}")
result = func(*args, **kwargs)
print(f"Function '{func.__name__}' returned: {result}")
return result
return wrapper
@logger
@timer
def add_numbers(a, b):
return a + b
这样,每次调用add_numbers函数时,都会先执行logger修饰器函数,打印出函数的参数和返回值,然后执行timer修饰器函数,打印出函数的执行时间。
原文地址: http://www.cveoy.top/t/topic/uhe 著作权归作者所有。请勿转载和采集!