Python技术教程:使用装饰器增强函数功能
引言
Python中的装饰器是一种高级功能,它允许你在不修改原有函数代码的情况下,增强或修改函数的行为。
装饰器的基本概念
装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。新的函数通常会执行一些额外的逻辑,然后调用原始函数。
案例讲解:记录函数运行时间
我们将创建一个装饰器,用于记录被装饰函数的运行时间。
步骤一:定义装饰器
import time
def timeit_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Function {func.__name__} took {end_time - start_time:.4f} seconds to complete.")
return result
return wrapper
步骤二:使用装饰器
@timeit_decorator
def example_function():
# 模拟一个耗时操作
time.sleep(2)
步骤三:运行函数并观察输出
example_function()
# 输出:Function example_function took 2.00xx seconds to complete.
案例讲解:权限校验
我们再来创建一个装饰器,用于在函数执行前进行权限校验。
步骤一:定义装饰器
def auth_decorator(func):
def wrapper(*args, **kwargs):
username = args[0] # 假设第一个参数是用户名
if username == 'admin':
return func(*args, **kwargs)
else:
print("Permission denied!")
return None
return wrapper
步骤二:使用装饰器
@auth_decorator
def sensitive_function(username):
print("This is a sensitive operation.")
步骤三:运行函数并观察输出
sensitive_function('admin') # 输出:This is a sensitive operation.
sensitive_function('guest') # 输出:Permission denied!
总结
通过学习使用装饰器,你可以轻松地在不修改原始函数代码的情况下,为其添加新的功能或特性。装饰器是Python编程中的一种强大工具,值得你深入学习和掌握。