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()

(添加属性)装饰器解析:

def work():
    pass

print(work.__dict__) {}
打印函数的属性字典是一个空的dict


# 定义一个装饰器,给函数赋予datas属性
def data(func):
func.datas = "nihao"
return func

#进行修饰
@data
def work():
pass

# 输出属性字典
print(work.__dict__) #{'datas': 'nihao'}

  

 

posted @ 2022-11-14 20:35  多测师-星sir  阅读(39)  评论(0)    收藏  举报