python装饰器简单例子,python的装饰器概念
说到python decorator,通常会先提到函数式编程,但实际上使用python decorator和知道是函数式编程没有任何关系。
例子
defdecorator(func):
defwrapper(*args,**kwargs):
印刷(“我是一个室内装潢师”)
returnfunc(*args,**kwargs)
返回包装器
@装饰者
deftest():
打印(“我正在测试”)
test()的输出如下
我是一名室内装潢师。
我是测试。就这么简单。我完全可以理解我们聊天中使用的代码中的“”。在调用某个函数的时候,@你要调用的decorator函数。然后,您可以添加一些通用函数,而无需更改函数本身的代码。
应用
那么装修工能做什么呢?最简单的应用是计算函数的运行时间。
进口时间
defrun_time(func):
defwrapper(*args,**kw):
t=time.time()
ans=func(*args,**kw)
t=time.time()-t
特勒恩斯
返回包装器
@run_time
deftest():
x=1
foriinrange(10**6):
x=1
returnx
test()的输出如下
(100001,0.0855388450622559)当然,decorator的应用还不止这些,它还可以传递参数,其著名的用法就像web框架flask的路由配置。有兴趣可以看一下它的源代码,非常好看。
所需基础
为了彻底了解装修工,有两个基础知识需要巩固。一个是闭包函数,另一个是可变参数。
补充
让我们给上面的装饰器添加一个参数:
进口时间
defrun_time(text):
defdecorator(func):
defwrapper(*args,**kwargs):
t=time.time()
ans=func(*args,**kwargs)
t=time.time()-t
ifttext:
回答,“太慢了”
else:
回答,“正常”
返回包装器
return装饰器
@run_time(1)
deftest():
x=1
foriinrange(10**6):
x=1
returnx
测试()
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。