Python装饰器理解与应用案例

原创 曾经终败给现在 2025-02-20 06:39 39阅读 0赞

装饰器在 Python 中是一种特殊类型的函数,它接受一个函数作为参数,并返回一个新的函数。这种机制使得我们可以在不改变原函数代码的情况下,为函数添加额外的行为。

以下是一些装饰器的应用案例:

  1. 日志记录:我们可以创建一个装饰器,当被装饰的函数执行时,会在控制台打印出函数的名称和执行时间。
  1. import time
  2. def log(func):
  3. def wrapper(*args, **kwargs):
  4. start_time = time.time()
  5. result = func(*args, **kwargs))
  6. end_time = time.time()
  7. print(f'Function: {func.__name__},'
  8. f'Time: {end_time - start_time:.2f}s, Result: {result}')
  9. return result
  10. return wrapper
  11. @log
  12. def calculate_sum(numbers):
  13. return sum(numbers)
  14. print(calculate_sum([1, 2, 3], [4, 5, 6]]))
  1. 认证检查:我们可以创建一个装饰器,用于验证登录的用户是否有执行某个操作的权限。
  1. def authenticate(func):
  2. def wrapper(*args, **kwargs):
  3. username = args[0]
  4. password = args[1]
  5. # Simulate authentication check
  6. if is_valid_user(username, password)):
  7. result = func(*args, **kwargs))
  8. return result
  9. else:
  10. raise UnauthorizedException("Invalid username or password.")
  11. return wrapper
  12. @authenticate
  13. def access_sensitive_data(user):
  14. print(f"Accessing sensitive data for user: {user}.")
  15. return "Data accessed successfully."
  16. username = "valid_user"
  17. password = "correct_password"
  18. try:
  19. result = access_sensitive_data(username, password))
  20. print(result)
  21. except UnauthorizedException as e:
  22. print(e.message)

以上案例展示了装饰器如何用于扩展功能,提高代码的复用性和可维护性。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,39人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python装饰理解应用案例

    装饰器是Python语言中的一种特殊语法,它允许我们在不修改已有代码的情况下,给函数增加新的功能。 理解装饰器的几个关键点: 1. 装饰器本质上是一个接受一个函数作为参数,并