PYTHON装饰器详解

Python装饰器是一种增强函数或类功能的语法,常用于日志、性能检测和权限判断。本文将通过实例介绍不带参数和带参数的函数装饰器,装饰器类以及类的装饰器,帮助理解其工作原理和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python装饰器的作用

用于增强扩展Python函数或类功能的一种语法糖,类似与装饰者模式,还具备解耦的功能。
此语法糖在Python使用极其广泛,Python开发必备技能之一,常见使用于日志,性能检测,权限判断等。
以下用几个例子,由浅入深的了解装饰器。

Python装饰器的类型

  • 函数/类方法装饰器
  • 装饰器类(用类装饰一个函数)
  • 类的装饰器(用函数装饰器装饰一个类)

函数装饰器

函数装饰器分为两种,不带参数的与带参数的。

最简单的装饰器

# 例子1 一个最简单的装饰器
import time

# 自定义一个名为simple_decorator的装饰器
def simple_decorator(func):		     # func代表被装饰的函数
    def wrapper(*args, **kwargs):            # *args, **kwargs代表被装饰函数的参数
        return func()
    return wrapper

# 使用simple_decorator装饰器装饰doing函数
@simple_decorator
def doing():
    time.sleep(1)

doing()

不带参数的函数装饰器

# 例子2 在例子1的基础上增加对函数调用时间的输出功能
import time

def simple_decorator(func):
    def wrapper(*args, **kwargs):
        call_begin_time = time.time()
        func()
        cost_time = time.time() - call_begin_time
        print(f'调用{func.__name__}函数花费了:{cost_time}秒。')
    return wrapper

@simple_decorator
def doing():
    time.sleep(1)

doing()

==============================
输出结果:
调用doing函数花费了:1.012902021408081秒。
进程已结束,退出代码为 0

带参数的函数装饰器

# 例子3 带参数的函数装饰器需要套3层
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值