Python 之 装饰器(2)

本文详细解析了Python装饰器的工作原理,包括多个装饰器的执行顺序、装饰器的执行时机、如何装饰有参函数和有返回值的函数,以及如何创建带参数的装饰器。通过具体示例,读者可以全面掌握装饰器的使用方法。

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

知识点:

1.两个装饰器同时装饰一个函数,装饰从从下往上 ,调用从上往下

2.装饰器执行时间:只要Python解释器执行到这个代码,那么就会自动进行装饰 ,不是等到调用的时候进行装饰

3.装饰器装饰无返回值有参函数

4.装饰器装饰有返回值有参函数(通用装饰器)

5.带有参数的装饰器

1.两个装饰器同时装饰一个函数

def w1(functionName):
    print("w1正在装饰")
    def inner():
        print("验证方法1")
        functionName()
    return inner
def w2(functionName):
    print("w2正在装饰")
    def inner():
        print("验证方法2")
        functionName()
    return inner

@w1
@w2
def func1():
    print("---func1---")

def func2():
    print("---func2---")
func1()

2.装饰器执行时间

def w1(functionName):
    print("w1正在装饰")
    def inner():
        print("正在验证")
        functionName()
    return inner

#只要Python解释器执行到这个代码,那么就会自动进行装饰 ,不是等到调用的时候进行装饰
@w1
def test1():
    print("test1")

3.装饰器装饰无返回值有参函数

def w1(func):
    def inner(*args,**kwargs):
        print("正在验证")
        func(*args,**kwargs)
    return inner


@w1
def f1(a,b):
    print(a+b)

f1(1,2)

4.通用装饰器

def w1(func):
    print("w1正在装饰")
    def inner(*args,**kwargs):
        print("身份验证")
        ret = func(*args,**kwargs)
        return ret
    return inner
@w1
def f1(a,b):
    return a+b
c = f1(1,2)
print(c)

5.带有参数的装饰器

def ar_w1(strarg):
    def w1(func):
        def inner():
            if strarg == "f1":
                print("正在验证")
                func()
            else:
                print("f2验证失败")
        return inner
    return w1
@ar_w1("f1")
def f1():
    print("---f1---")
@ar_w1("f2")
def f2():
    print("---f2===")
f1()
f2()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值