import time
"""针对有参无参函数如何兼容"""defouter(xxx):defget_time(*args,**kwargs):
start_time = time.time()# 在调用index函数之前获取时间戳
res = xxx(*args,**kwargs)# 调用index函数
end_time = time.time()print('函数的执行时间是:',end_time - start_time)return res
return get_time()defhome():
time.sleep(2)print('from home')return'执行home函数之后的返回值'defindex(name):
time.sleep(1)print('from index')return'执行index函数之后的返回值'
home = outer(home)
xxx = home()print(xxx)
index = outer(index)
res = index('jason')print(res)
home = outer(home)
home()deffunc(a,b,c):
time.sleep(1)print('from func')
index = outer(index)
index('jason')
home = outer(home)
home()
func = outer(func)
func(1,2,3)
装饰器的固定模板
from functools import wraps
defouter(func_name):@wraps(func_name)# 仅仅是为了让装饰器不容易被别人发现 做到真正的以假乱真definner(*args,**kwargs):print('执行被装饰对象之前可以做的额外操作')
res = func_name(*args,**kwargs)print('执行被装饰对象之后可以做的额外操作')return res
return inner
import time
defhome()
time,sleep(1)print('from home')return'home返回值'
home = outer(home)
res = home()print(res)"""
执行home函数之前需要添加校验用户身份的功能
"""
装饰器语法糖
import time
@outer# home = outer(真正的函数名home)defhome():'''我是home函数 天气很热'''
time.sleep(1)print('from home')return'home返回值'help(home)print(home)
home()defindex():'我是index函数 我的功能很强大'passhelp(index)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)