装饰器
-
在不修改原来的函数的情况下,用来对其他函数进行扩展。
-
在开发中,我们都是通过装饰器来扩展函数的功能的。
-
这样做不会违反开闭原则(ocp) 程序的设计:要求开发对程序的扩展,要关闭对程序的修改
def func(a,b):
return a-b
def decoration(old_func):
# *args接收所有的位置参数、**kwargs接收所有的关键字参数
def new_func(*args, **kwargs):
print('a和b的差为')
#把位置参数拆包放进一个元组,或者把关键字参数放进一个字典
result = old_func(*args, **kwargs)
return result
return new_func
f=decoration(func)
# r =f(6,9)
# print(r)
print(f(6,9))
>>a和b的差为
-3
#也可以这么写
@decoration
def func(a,b):
return a-b
print(func(3,9))
>>a和b的差为
-6