Python装饰器理解与应用案例
装饰器在 Python 中是一种特殊类型的函数,它接受一个函数作为参数,并返回一个新的函数。这种机制使得我们可以在不改变原函数代码的情况下,为函数添加额外的行为。
以下是一些装饰器的应用案例:
- 日志记录:我们可以创建一个装饰器,当被装饰的函数执行时,会在控制台打印出函数的名称和执行时间。
import time
def log(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs))
end_time = time.time()
print(f'Function: {func.__name__},'
f'Time: {end_time - start_time:.2f}s, Result: {result}')
return result
return wrapper
@log
def calculate_sum(numbers):
return sum(numbers)
print(calculate_sum([1, 2, 3], [4, 5, 6]]))
- 认证检查:我们可以创建一个装饰器,用于验证登录的用户是否有执行某个操作的权限。
def authenticate(func):
def wrapper(*args, **kwargs):
username = args[0]
password = args[1]
# Simulate authentication check
if is_valid_user(username, password)):
result = func(*args, **kwargs))
return result
else:
raise UnauthorizedException("Invalid username or password.")
return wrapper
@authenticate
def access_sensitive_data(user):
print(f"Accessing sensitive data for user: {user}.")
return "Data accessed successfully."
username = "valid_user"
password = "correct_password"
try:
result = access_sensitive_data(username, password))
print(result)
except UnauthorizedException as e:
print(e.message)
以上案例展示了装饰器如何用于扩展功能,提高代码的复用性和可维护性。
还没有评论,来说两句吧...