在Python中的装饰器函数使用
发布时间:2023-06-29 15:18:45
装饰器函数是Python中一种特殊的函数,它可以在不改变原函数代码的情况下,对函数的功能进行扩展或修改。
装饰器函数的定义形式如下:
def decorator_func(original_func):
def wrapper_func(*args, **kwargs):
# 在调用原函数之前的操作
# 可以在这里添加功能扩展的代码
result = original_func(*args, **kwargs)
# 在调用原函数之后的操作
# 可以在这里添加功能扩展的代码
return result
return wrapper_func
在上述代码中,original_func表示被装饰的函数。在wrapper_func函数中,我们可以在调用原函数之前和之后添加功能扩展的代码。
使用装饰器函数时,可以使用@符号将装饰器函数应用到目标函数上,例如:
@decorator_func
def target_func():
print("Hello, World!")
下面我们来看一个实际的例子,使用装饰器函数来计算函数的运行时间:
import time
def calculate_run_time(original_func):
def wrapper_func(*args, **kwargs):
start_time = time.time()
result = original_func(*args, **kwargs)
end_time = time.time()
run_time = end_time - start_time
print("函数运行时间:{}秒".format(run_time))
return result
return wrapper_func
@calculate_run_time
def sum_numbers():
total = 0
for i in range(1, 10000001):
total += i
return total
sum_numbers()
在上述代码中,我们定义了一个装饰器函数calculate_run_time,它会计算被装饰函数的运行时间,并在结束时打印出来。然后我们使用@calculate_run_time将装饰器应用到了sum_numbers函数上。
通过运行上面的代码,会输出函数运行时间。
在实际应用中,装饰器函数可以用于日志记录、性能分析、权限校验等方面。通过使用装饰器函数,我们可以在不修改原函数的情况下,简洁地实现功能的扩展和修改。
