Python装饰器功能与使用误区示例

原创 傷城~ 2025-01-31 09:54 53阅读 0赞

装饰器是Python中一种强大的特性,它允许我们在不修改已有代码的情况下,增加新的功能。

下面是一些关于装饰器的功能和使用误区的示例:

功能示例:

  1. 计时器:@timeit
    ```python
    import timeit

def my_function():
for i in range(1000):
pass

@timeit
my_function()

  1. 2. 日志记录:`@logger`
  2. ```python
  3. import logging
  4. logger = logging.getLogger(__name__)
  5. logger.setLevel(logging.DEBUG)
  6. def log_decorator(func):
  7. def wrapper(*args, **kwargs):
  8. logger.debug(f"Calling {func.__name__} with args {args}, kwargs {kwargs}")
  9. return func(*args, **kwargs))
  10. return wrapper
  11. @log_decorator
  12. def my_function():
  13. print("Doing something")
  14. my_function()

误区示例:

  1. 误认为装饰器就是修改函数行为:@staticmethod
    ```python

    这样使用会报错,因为静态方法是类级别的方法,不是装饰器

    class MyClass:
    @staticmethod
    def my_method():
    1. print("My method")

my_instance = MyClass()
my_instance.my_method() # 报错,因为这不是装饰器的用法

  1. 2. 误认为所有的函数都可以被装饰:`@non_function_decorator`
  2. ```python
  3. def non_function_decorator(func):
  4. return func
  5. # 这样使用会报错,因为非函数(如类、属性等)无法直接装饰
  6. class MyClass:
  7. @non_function_decorator # 报错
  8. def my_method(self):
  9. print("My method")
  10. my_instance = MyClass()
  11. my_instance.my_method() # 报错

以上示例展示了Python装饰器的功能和使用误区。

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

发表评论

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

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

相关阅读