Python中的装饰器:使用与误解案例

原创 青旅半醒 2025-01-30 15:51 44阅读 0赞

装饰器是 Python 中一种强大的语言特性,它允许在不修改原函数代码的情况下,为其添加新的功能。让我们通过一些实际的案例来理解装饰器的使用和可能存在的误解。

案例 1:日志记录装饰器

  1. # 原始函数
  2. def original_function():
  3. print("Original function called")
  4. # 日志记录装饰器
  5. @logger
  6. def decorated_function():
  7. print("Decorated function called")
  8. # 创建 logger 实例
  9. logger = logging.getLogger(__name__)
  10. logger.setLevel(logging.INFO)
  11. # 打印日志
  12. decorated_function()

案例 2:性能计时装饰器

  1. import time
  2. # 性能计时装饰器
  3. @timer
  4. def slow_function():
  5. time.sleep(5)
  6. # 计时装饰器实现
  7. def timer(func):
  8. def wrapper(*args, **kwargs):
  9. start_time = time.time()
  10. result = func(*args, **kwargs))
  11. end_time = time.time()
  12. print(f"{func.__name__}}: Time taken - {end_time - start_time:.3f} sec")
  13. return result
  14. return wrapper
  15. # 使用装饰器
  16. decorated_slow_function = timer(slow_function)

误解案例:

  1. 误认为装饰器可以改变类的行为
    虽然装饰器确实允许在不修改类(实例化对象)的情况下,对方法或属性进行增强,但它并不会改变类的定义。

  2. 误以为装饰器可替代类中函数的功能
    实际上,装饰器是作为辅助工具存在的,它可以在原函数的基础上增加功能,但不能完全取代原函数。

通过以上的案例和误解分析,相信你对Python中的装饰器有了更深入的理解。

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

发表评论

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

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

相关阅读