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>

  

 

posted @   多测师-星sir  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示