python-装饰器
装饰器: 装饰器可以用来做什么?
作用:可以在不修改功能函数内部代码的情况下,给功能函数进行扩展的新 功能(对开放封闭原理)
1.装饰器可以给当前的功能进行扩展增加新的功能
2.装饰器可以给当前的函数增加赋予属性
3.对扩展开放:意味着有新的需求或变化时,可以对现有的系统进行扩展 ,以适应新的情况。
4.对修改关闭:在扩展原有系统的功能时,只需增加新的代码,而不需要 对原有的代码进行修改
如何去定义一个装饰器?
1.闭包装饰器的实现: def 外层函数(func): def 内层闭包函数(): #函数执行前需要扩展的功能代码 func() 被修饰的函数 #函数执行后需要扩展的功能代码 return 内层闭包函数
(扩展新的功能)闭包装饰器解析:
""" 装饰器传参数::: 1.第一层参数,用来接收装饰器的参数 2.第二层参数,用来接收被调用的函数 3.第三层参数,用来接收被装饰函数的参数 """ def man_xing(name,age): def func(item): def func1(*args, **kwargs): print("前置条件",name ) res = item(*args, **kwargs) print("后置条件",age) return res return func1 return func @man_xing("manxing",18) def work(): print("-------work---------") work()
(添加属性)装饰器解析:
1 2 3 4 5 | def work(): pass print (work.__dict__) {} 打印函数的属性字典是一个空的 dict <br><br><br> # 定义一个装饰器,给函数赋予datas属性def data(func):<br> func.datas = "nihao"<br> return func<br><br>#进行修饰<br>@data<br>def work():<br> pass<br><br># 输出属性字典<br>print(work.__dict__) #{'datas': 'nihao'}<br> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?