十九、python函数装饰器的使用方法详解

函数装饰器,就是不改变原来的函数,然后通过另一个函数给函数增加新的功能,我们来通过例子来给大家讲解一下。

我们来先定义一个有文档字符串的求和函数,并正常调用的它。

def addnum(a,b):
    '''
    我是一个文档字符串
    '''
    return a+b
addnum(1,1)
#输出结果是
2

 这时如果我们想在函数中把文档字符串输出出来,还有把当前函数名称输出出来,但是不能改别原来的函数结构,这时我们就要用到函数装饰器。

我们重新定义一个装饰器函数,把原来的函数传进去,然后再在装饰器函数内容定义一个新的函数,把参数传进去,就输出原来函数的文档字符串跟函数名称,然后再返回一个函数重新调用,这时我们先定义一个变量接回这个函数,然后我们可以看到这时会输出文档字符串及函数名称

def zxq_add(fuct):
    def new_fuct(*arg,**gjc):
        print('doc' + fuct.__doc__)
        print('name' + fuct.__name__)
        return fuct(*arg,**gjc)
    return new_fuct
new_fuction = zxq_add(addnum)
new_fuction(1,1)
#输出结果是
doc
    我是一个文档字符串
    
nameaddnum
2

 如果大家不理解的话可以多看上面的例子,函数装饰器,在实际应用中调用,会在需要装饰的函数面前,用@+上装饰器函数的名称。看例子,先定义一个装饰器,然后调用他,我们可以看到结果是把装饰器里面执行的代码也输出出来了

def zxq_add(fuct):
    def new_fuct(*arg,**gjc):
        print('doc' + fuct.__doc__)
        print('name' + fuct.__name__)
        return fuct(*arg,**gjc)
    return new_fuct
@zxq_add
def addnum(a,b):
    '''
    我是一个文档字符串
    '''
    return a+b
addnum(1,2)
#输出内容是
doc
    我是一个文档字符串
    
nameaddnum
3

函数装饰器就讲到这里,大家有问题欢迎评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值