python的装饰器示例
时间: 2023-10-17 07:31:10 浏览: 100
一个Python的装饰器示例是用来计算函数执行时间的装饰器。在这个示例中,使用了一个名为deco的装饰器,它可以被应用在一个或多个函数上。这个装饰器记录了函数的执行时间,并返回函数的执行结果和耗时。具体的示例代码如下所示:
```python
import time
# 装饰器部分
def deco(func):
def timeit():
start = time.time()
result = func()
end = time.time()
return (result, end - start)
return timeit
# 引用装饰器
@deco
def loop():
result = []
for i in range(10):
result.append(i)
time.sleep(0.2)
return result
if __name__ == "__main__":
print(loop())
```
在上述示例中,装饰器函数`deco`实现了计算函数执行时间的功能。通过将`@deco`放在函数定义的上方,可以将装饰器应用到`loop`函数上。当调用`loop`函数时,装饰器会自动记录函数的执行时间,并返回函数的执行结果和耗时。
另外,还有一个多函数的装饰器示例,可以同时应用在多个函数上。具体的示例代码如下所示:
```python
import time
# 装饰器部分
def deco(func):
def timeit():
start = time.time()
result = func()
end = time.time()
return (result, end - start)
return timeit
# 引用装饰器
@deco
def loop():
result = []
for i in range(10):
result.append(i)
time.sleep(0.2)
return result
@deco
def test():
t1 = []
for i in range(10):
t1.append(i)
time.sleep(0.8)
return t1
if __name__ == "__main__":
print(loop())
print(test())
```
在这个示例中,除了`loop`函数之外,还定义了一个名为`test`的函数。通过在函数定义前加上装饰器`@deco`,可以将装饰器同时应用到多个函数上。当调用这些函数时,装饰器会记录它们的执行时间并返回执行结果和耗时。
除此之外,还有一个示例展示了如何使用装饰器来包装函数。具体的示例代码如下所示:
```python
def wfunc(func):
print('执行外函数')
def inner(*args, **kwargs):
print('执行内函数。。')
a = 1
b = 2
f = func(a, b,*args, **kwargs)
print(f)
return f
return inner
# 这里只能返回“内函数”的名字
@wfunc
def sum_(a,b,c,d):
print('执行计算函数...')
print(a + b)
print(c + d)
return a + b + c + d
if __name__ == '__main__':
s = sum_(3,4)
print('-----------')
print(s)
```
在这个示例中,定义了一个包装函数`wfunc`,通过将装饰器`@wfunc`放在函数定义的上方,可以将装饰器应用到`sum_`函数上。当调用`sum_`函数时,装饰器会在函数执行前后分别输出一些信息,并返回函数的执行结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [python装饰器示例](https://blog.csdn.net/aaaaaab_/article/details/86614878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [python装饰器 什么是python装饰器 python装饰器示例](https://blog.csdn.net/qq_24211837/article/details/121348688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文