python案例,需求是如何在不更改源代码和不更改原函数调用方式的基础上实现函数的功能新增?可通过高阶函数+嵌套函数实现装饰器效果
代码如下:
import time
#嵌套函数
def timer(func):
def deco():
start_time=time.time()
func()
stop_time=time.time()
print("the func run time is %s" %(stop_time-start_time))
return deco
#@ + "函数名" 是python中的一种语法糖
@timer
def test1():
time.sleep(2)
print('in the test1')
#@ + "函数名" 是python中的一种语法糖
@timer
def test2():
time.sleep(2)
print('in the test2')
#调用方式没有发生改变,源代码也没有发生改变
test1()
test2()
运行结果:
in the test1
the func run time is 2.012403726577759
in the test2
the func run time is 2.0124034881591797
[Finished in 4.2s]
可通过使用pycharm的debug功能进行查看代码的执行过程,可清洗看到每一步的执行步骤和顺序。
装饰器:修饰其它函数的工具,修饰添加功能,工具指的是函数
本质是函数,(装饰其它函数)就是为其它函数添加附加功能
为什么要使用装饰器?
a.不能修改被装饰的函数的源代码
b. 不能修改被装饰的函数的调用方式
结语
感谢阅读,欢迎在评论区中发表自己不同的观点,若有其他问题请在评论区留言,喜欢的朋友请多多关注转发支持一下。
领取专属 10元无门槛券
私享最新 技术干货