一个例子解释python装饰器
发布时间:2025-09-26 11:09:52
说到python装饰器,函数编程一般都是先提到的,但实际上使用python装饰器与是否知道他是函数编程无关。
例子
defdecorator(func): defwrapper(*args,**kwargs): print('我是装饰器哟') returnfunc(*args,**kwargs) returnwrapper @decorator deftest(): print('我是test') test()
输出如下
我是装饰器哟 我是test
事实上,这很简单。您可以将代码中的@理解为我们在聊天中使用的@。在调用某个函数时,@您想要调用的装饰函数,然后您可以在函数本身代码不变的情况下添加一些普遍功能。
应用
那装饰器能做什么呢?计算函数运行时间最简单的应用。
importtime defrun_time(func): defwrapper(*args,**kw): t=time.time() ans=func(*args,**kw) t=time.time()-t returnans,t returnwrapper @run_time deftest(): x=1 foriinrange(10**6): x+=1 returnx test()
输出如下
(1000001,0.08555388450622559)
当然,装饰的应用不仅如此,它还可以传递参数。著名的用法,如web框架flask的路由配置。如果你感兴趣,你可以阅读它的源代码,这是非常漂亮的。
所需基础
为了彻底了解装饰,有两个基本知识需要巩固。一个是封闭函数,另一个是可变参数。
补充
我们为上述装饰增加了一个参数:
importtime defrun_time(text): defdecorator(func): defwrapper(*args,**kwargs): t=time.time() ans=func(*args,**kwargs) t=time.time()-t ift>text: returnans,'太慢' else: returnans,'正常' returnwrapper returndecorator @run_time(1) deftest(): x=1 foriinrange(10**6): x+=1 returnx test()
下一篇 Python小白必学的面向对象