python学习笔记--装饰器的多参数

"""
python装饰器的参数

"""

def func1(function_name):
    print("--------装饰器---1--------")
    def fucn1_inner(a,b):
        print("-----fucn1_inner----start---------")
        function_name(a,b)
        print("-----fucn1_inner----end---------")
    print("--------装饰器---2--------")
    return fucn1_inner


@func1
def test(a,b):
    print("-------test()---------")
    print("a=%d, b=%d"%(a,b))


test(1,2)


print("-"*120)
"""
传入多参数
"""
def func2(function_name):
    print("--------装饰器---1--------")
    def fucn2_inner(*args,**kwargs):#传入多参数都可以
        print("-----fucn1_inner----start---------")
        function_name(*args, **kwargs)
        print("-----fucn2_inner----end---------")
    print("--------装饰器---2--------")
    return fucn2_inner


@func2
def test2(a,b):
    print("-------test()---------")
    print("a=%d, b=%d"%(a,b))

@func2
def test3(a,b,c):
    print("-------test()---------")
    print("a=%d, b=%d c=%d"%(a,b,c))
test2(111,222)
test3(444, 555, 666)


函数调用图:

运行结果:

--------装饰器---1--------
--------装饰器---2--------
-----fucn1_inner----start---------
-------test()---------
a=1, b=2
-----fucn1_inner----end---------
------------------------------------------------------------------------------------------------------------------------
--------装饰器---1--------
--------装饰器---2--------
--------装饰器---1--------
--------装饰器---2--------
-----fucn1_inner----start---------
-------test()---------
a=111, b=222
-----fucn2_inner----end---------
-----fucn1_inner----start---------
-------test()---------
a=444, b=555 c=666
-----fucn2_inner----end---------





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值