当前位置: 首页 > 图灵资讯 > 行业资讯> 一个例子解释python装饰器

一个例子解释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中reduce函数和lambda表达式的学习

Python中reduce函数和lambda表达式的学习

2025-09-26
Python小白必学的面向对象

Python小白必学的面向对象

2025-09-26
一个例子解释python装饰器

一个例子解释python装饰器

2025-09-26
深入理解Python的set和dict

深入理解Python的set和dict

2025-09-25
Python中正则表达式的巧妙使用

Python中正则表达式的巧妙使用

2025-09-25
5分钟搞定Python中函数的参数

5分钟搞定Python中函数的参数

2025-09-25