python 装饰器
1. 无参装饰器(无函数返回值)
import time def timer(func): ''' prints function time ''' def wrapper(): start = time.time() func() print('function %s run time %s' % (func.__name__, time.time() - start)) return wrapper @timer def f1(): time.sleep(1) # 通过“睡”一会儿,模拟函数执行的时间 @timer def f2(): time.sleep(2) f1() # function f1 run time 1.0000762939453125 f2() # function f2 run time 2.000044345855713
2. 有参装饰器(无函数返回值)
import time def timer(func): def wrapper(*args, **kwargs): start = time.time() func(*args, **kwargs) print('function %s run time %s' % (func.__name__, time.time() - start)) return wrapper @timer def public(): time.sleep(0.1) print('oldboy public index page') @timer def admin(name): time.sleep(0.1) print('oldboy public admin page') # 老男孩后台页面 if name == 'root': # 只有用户名是root的用户才能访问 return 'welcome vip page' return 'name error' # 否则提示请用户名错误 public() admin('oldboy') """ # 上面两个函数执行结果 oldboy public index page # public函数执行的结果 function public run time 0.10057306289672852 oldboy public admin page # 成功进入了admin页面 function admin run time 0.10007095336914062 """
3. 有参数,有函数返回值
import time def timer(func): def wrapper(*args, **kwargs): start = time.time() ret = func(*args, **kwargs) print('function %s run time %s' % (func.__name__, time.time() - start)) return ret #被执行函数的函数返回值 return wrapper @timer def public(): time.sleep(0.1) print('oldboy public index page') @timer def admin(name): time.sleep(0.1) print('oldboy public admin page') # 老男孩后台页面 if name == 'root': # 只有用户名是root的用户才能访问 return 'welcome vip page' return 'name error' # 否则提示请用户名错误 public_ret = public() admin_ret = admin('root') print('public return:', public_ret) # public return: None print('admin return:', admin_ret) # admin return: welcome vip page
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具