python装饰器扩展

装饰器两个应用:

1.   计算函数次数

就是给函数添加计算次数的额外功能,这里使用装饰器非常方便

做法:在函数上面写一个装饰器,装饰器中闭包函数外部函数的参数指向了函数引用,通过外部函数的参数调用前后计算来统计函数次数

问题:计数起始值比如num=0是引用全局变量吗?

          答案是否定的,因为全局变量整个程序共用,所以不安全。我们的做法是将计数起始值放到闭包外部函数定义下,这样比较安全。而参数调用在闭包内部函数下,所以这里需要使用nonlocal num 去访问,然后计数加1去计算调用次数

2.   计算函数时间

同样使用装饰器去做

做法在参数调用前后加记时时间,通过两者之差得到调用耗时

 

类装饰器:

类似将闭包封装到类中,闭包中外部函数的参数,通过初始化传入,而调用函数作为实例对象,通过使用实例对象()去自动调用__call__方法,因为参数指向了调用函数,所以__call__方法下,只需将参数()调用即可

 

装饰器传参:

在闭包基础上,最外层在定义一个函数,这个函数返回闭包外部函数引用,而这个函数的参数可以我们自己手动传入。

用法:在调用函数上写@定义函数(),记住()必须有。执行顺序先执行定义函数()再执行@闭包外部函数,此时相当于执行闭包装饰器


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值