python-装饰器-装饰函数带参数(三层def,两层return,语法糖)
2022/5/10 14:00:37
本文主要是介绍python-装饰器-装饰函数带参数(三层def,两层return,语法糖),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# -*- coding:utf-8 -*- # __author__: # 2022/5/8 # 需要知道服务器响应速度,还需要知道谁执行了测试用例 import time def show_time(flag): # 接收装饰函数入参 def show_time_name(func):# 接收被装饰函数本身 def inner(*args,**kwargs): # 接收被装饰函数入参 begin_time = time.time() func(*args,**kwargs) end_time = time.time() print('服务器响应时间为:%s' % (end_time-begin_time)) print('装饰器传入的参数:%s' % flag) # return func(*args,**kwargs) 也可以在这边去做执行 return inner return show_time_name @show_time('aaa') # foo = show_time('aaa')() foo = show_time_name(),这边一定要注意@show_time后面没有括号但是也会去执行一层,加上括号就会执行两层 def foo(*args): amount = 0 for i in args: amount += i print(amount) time.sleep(1) foo(3) # inner()
【1】语法糖:@show_time--放在foo被装饰函数上面,指的是在调用foo函数的时候,会先去执行(直接执行,不是函数名)show_time函数,foo被装饰函数名作为入参传入
【2】@show_time---即 foo = show_time(foo),此时foo=show_time_name
【3】@show_time('aaa')---即先执行show_time,show_time的入参为aaa,返回show_time_name;然后再去执行show(),即执行show_time_show(),返回inner
【4】此时 foo = inner
【5】最终执行foo(),即执行inner(),在inner里面有被装饰函数foo的执行
注:这个博主讲解的很好:https://www.bilibili.com/video/BV1JW411i7HR?spm_id_from=333.337.search-card.all.click
这篇关于python-装饰器-装饰函数带参数(三层def,两层return,语法糖)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门