【Python面试题收录】什么是装饰器,怎么使用它?

        Python装饰器是一种非常实用的高级功能,它允许用户在不修改原始函数代码的情况下,给函数添加额外的功能。装饰器本质上是一个接受函数作为参数的函数,它返回一个新的函数,这个新函数通常会在执行原始函数之前或之后增加一些额外的操作。

在Python中,装饰器使用@符号进行定义。

一、如何定义装饰器

(1)基本语法

        Python装饰允许在不修改原有函数代码的基础上,动态地增加或修改函数的功能,装饰器本质上是一个接收函数作为输入并返回一个新的包装过后的函数的对象。

def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

# 当调用say_hello时,实际上是调用了装饰器返回的新函数wrapper
say_hello()

(2)带参数的装饰器

def repeat(n):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(n):
                result = func(*args, **kwargs)
            return result
        return wrapper
    return decorator

@repeat(3)
def greet(name):
    print(f"Hello, {name}!")

greet("Alice")

二、装饰器的应用场景

  • 日志记录: 装饰器可用于记录函数的调用信息、参数和返回值。
  • 性能分析: 可以使用装饰器来测量函数的执行时间。
  • 权限控制: 装饰器可用于限制对某些函数的访问权限。
  • 缓存: 装饰器可用于实现函数结果的缓存,以提高性能。

相关推荐

  1. python什么装饰

    2024-06-08 14:30:03       30 阅读
  2. python什么装饰

    2024-06-08 14:30:03       16 阅读
  3. 【Flutter 面试什么BuildContext,什么

    2024-06-08 14:30:03       13 阅读
  4. python装饰的作用什么

    2024-06-08 14:30:03       7 阅读
  5. Python面试装饰

    2024-06-08 14:30:03       34 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 14:30:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 14:30:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 14:30:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 14:30:03       18 阅读

热门阅读

  1. ES各种分页方式及其优缺点对比

    2024-06-08 14:30:03       7 阅读
  2. 【求助】ansible synchronize 问题

    2024-06-08 14:30:03       9 阅读
  3. php翻车集锦

    2024-06-08 14:30:03       5 阅读
  4. windows php8.1 安装imagick识别不到扩展

    2024-06-08 14:30:03       6 阅读
  5. 如何进行单元测试以及使用过的测试框架

    2024-06-08 14:30:03       7 阅读