python中的装饰器简述

目录

一、基本概念

二、几种不同的装饰器

1.普通装饰器

2.待参数的装饰器

3.通用装饰器

4.类的装饰器

5.python的中内置装饰器

6.缓存装饰器

7. 使用__call__方法实现装饰器

三、装饰器的几个例子


本篇文章介绍python中的装饰器。

一、基本概念

装饰器的作用:在不修改原功能的基础上,给原功能添加新功能

开放封闭原则: 开放:对已实现的的功能的扩展是开放的。

                          封闭:对已实现的功能修改是封闭的。

装饰器的应用场景

(1)登录验证

(2)函数运行时间统计

(3)执行函数之前的准备工作

(4)执行函数后清理功能

二、几种不同的装饰器

下面几种不同类型的装饰器:

1.普通装饰器

def fun(num):
    def in_fun():
        print("这个是内部定义的函数")
        print(num)

    return in_fun  # 可以外部调用

@fun  # work  = fun(work)
def work():
    print('之前的函数功能')

work()

在函数中定义函数,将内层函数作为外层函数的返回值。

2.待参数的装饰器

def decorator(func):
    def wrapper(a, b):
        print("装饰新增的功能")
        func(a, b)

    return wrapper

# 函数使用装饰器
@decorator
def add(a, b):
    print(F"a+b的值是{a + b}")

# 调用函数
add(11, 22)

使用带参数的装饰器时,要求装饰器中的内层函数的参数个数和装饰函数的参数个数相同

wrapper参数个数 = func参数个数 = add参数个数

3.通用装饰器

可以传递多个参数进行装饰,即可装饰带参数的函数,也可以装饰不带参数的函数

def decorator(func):
    def wrapper(*args, **kwargs):
        print("装饰器的功能函数1")
        res = func(*args, **kwargs)
        print("装饰器的功能函数2")
        return res
    return wrapper

# 装饰不带参数的函数
@de
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值