Python——初识装饰器

在实际应用中,对源代码修改封闭,对扩展开放,所以我们不能在函数内部直接添加时间模块,进而求出运行时间。只能在外部进行扩展。但是我们调用函数时,不能修改调用函数的方式。因此我们采用装饰器的方式来进行调用。

具体代码看下图:

#首先定义时间的模块
 import time

#写一个加法器函数
 def add(a,b):
     print(a+b)

#随便写一个函数
 def foo():
     print('hello')
     time.sleep(2)

#写一个关于看某个函数所运行的时间函数
 def show_time(f):
     def inner():
             first = time.time()
             f()
             end = time.time()
             print('spend %s'%(end-first))
     return inner


#当他人大量使用某个公共模块时,你不能修改调用的方法
 foo = show_time(foo)
 foo()
#                 hello
#                 spen 2.001201868057251


 @show_time              #与上面的foo = show_time(foo)相等,这就是一个装饰器
 def text():
     print('You are a student')
     time.sleep(3)

 text()              #当执行这段代码时,直接去执行inner函数
#结果            You are a student
#所需的时间       spen 3.001455307006836

在上面的程序中,当我们执行程序时,例如 “ text() ” 这个时,其实已经先不执行原来的函数模块,这是因为在上面我们定义了@show_time,而这个帮我们所做的事情就是当执行业务逻辑text()时,帮我们从执行原来的函数块到执行inner()函数块

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xa_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值