装饰器: 装饰器可以用来做什么? 作用:可以在不修改功能函数内部代码的情况下,给功能函数进行扩展的新 功能(对开放封闭原理) 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'}
标签:函数,python,work,func,print,装饰,def From: https://www.cnblogs.com/manxingsir/p/16890331.html