Python装饰器

万能装饰器

函数定义版:
def set_func(func):
    def call_func(*args,**kwargs):
        print('---额外的功能---')
        return func(*args,**kwargs)
    return call_func

# 装饰器就是语法糖,对函数添加额外的功能
@set_func  
# 此处相当于 set_func(test),
# 即func指向装饰前的test,call_func就是装饰后的test
def test(*args,**kwargs):
    print('---函数体---')
    return args, kwargs
l = [1,2,3]
dic = {'a':1,'b':2}
print(test(*l,**dic))

结果:
—额外的功能—
—函数体—
([1,2,3],{‘a’:1,’b’:2})

类定义版:
class Set_func(object):
    def __init__(self,func):
        print('---初始化---')
        print("func's name is %s" % func.__name__)
        self.__func = func
    def __call__(self,*args,**kwargs):
        print('---额外的功能---')
        self.__func()

@Set_func
def test():
    print('---函数体---')

test()      

结果:
—初始化—
func’s name is test
—额外的功能—
—函数体—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值