第二十四章 装饰器(decorators)(Python)


前言

装饰器(decorators)是 Python 中的一种高级功能,它是一种函数,接受另一个函数作为参数,并返回一个新的函数或修改原来的函数。

一、语法定义

'''
不带参数的装饰器
'''
def decorators_demo(func):
    def wrapper():
        print("原始函数执行前")
        func()
        print("原始函数执行后")
        
    return wrapper
    
@decorators_demo
def func():
    print("原始函数")
    
    
if __name__ == '__main__':
    func()
'''
带参数的装饰器
'''
import time


def required_time(func):
    def wrapper(*args, **kwargs):
        start = time.time()
        a, b, a_b, n = func(*args, **kwargs)
        end = time.time()
        return "运行加法算式:{} + {} = {},耗费时间 {} 秒".format(a, b, a_b, end - start - n)

    return wrapper


@required_time
def a_sum_b(a, b):
    a_b = a + b
    time.sleep(1)
    return a, b, a_b, 1


if __name__ == '__main__':
    a, b = 10, 7
    res = a_sum_b(a, b)
    print(res)  # 运行加法算式:10 + 7 = 17,耗费时间 0.0045359134674072266 秒
'''
类装饰器
'''
class decorator_class:
    def __init__(self, func):
        self.func = func

    def __call__(self):
        print("原始函数执行前")
        self.func()
        print("原始函数执行后")


@decorator_class
def func():
    print("原始函数")


if __name__ == '__main__':
    func()

二、应用场景

  • 日志记录:装饰器可用于记录函数的调用信息、参数和返回值。
  • 性能分析:可以使用装饰器来测量函数的执行时间。
  • 权限控制:装饰器可用于限制对某些函数的访问权限。
  • 缓存:装饰器可用于实现函数结果的缓存,以提高性能。
  • 16
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值