装饰器

本文介绍了Python装饰器的概念及其使用方式,装饰器可以在不修改原始函数的基础上为其添加新的功能,提高代码复用性和可读性。文章详细解释了函数装饰器的工作原理,并通过实例展示了如何使用装饰器。

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

介绍一下Python的装饰器?

简单来说:为已存在的对象添加额外功能。
在不改变源代码和调用方法的基础上,添加额外功能。
优点:提高了程序的可重复利用性,增加了程序的可读性
详细来说:
装饰器有函数装饰器和类装饰器
函数装饰器有带参和不带参(最简单,2层)
介绍:
python的函数装饰器是一个嵌套函数,外部函数的参数是被装饰函数名,
返回的是内部函数的引用,内部函数的参数是被装饰函数的参数,返回的
是被装饰函数的返回值。

python提供@语法糖,来调用装饰器,在原函数上加上@装饰器名

一个函数可被多个装饰器装饰,这时候的执行过程是从下自上的


def deco(func):
    def wrap(*args, **kwargs):
       return func(*args, **kwargs)
   return wrap

@deco
def foo(a, b):
return a ** b

------------------------------------------------------------------

装饰器的调用,在原函数上加上@装饰器名
实际过程是:
foo = deco(foo)
foo()
将原函数名引用传递给装饰器函数,装饰器返回一个内置函数引用,最后在调用原函数的时候
实际上是调用了装饰器的内置函数


当多个装饰器装饰一个函数,其执行顺序是从下往上,检验过程是先检验上面的,再检验下面的

@deco1
@deco2
@deco3
def foo(x, y):
    return x ** y

# 过程拆解 1
fn3 = deco3(foo)
fn2 = deco2(fn3)
fn1 = deco1(fn2)
foo = fn1
foo(3, 4)

# 过程拆解 2
# 单行: deco1( deco2( deco3(foo) ) )(3, 2)
deco1(
deco2(
deco3(foo)
)
)(3, 4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值