装饰器的作用,希望这段代码能说明:
1、当需求发生变化时,add_two_same要加一个新需求时。 2、当类似的需求是一堆时; 而不仅仅是一个; 如何在不改变原来的函数部分时,我们利用一个框架来解决这个问题?这时…
另外,装饰器没有改变前端的用户体验,加了装饰器的函数就是房子被装修了,房间没变,但墙粉刷了一下,还是用那把钥匙进门…
def add_two_same(a, b):
print("a + b : ", a + b)
def add_two_new(a, b):
value = max(a,b)
if value < 100:
print(f"你数学要加油!100以内的计算以后尽量心算!")
print("a + b : ", a + b)
else:
print("a + b : ", a + b)
def my_wrap(func):
def f(a,b):
value = max(a,b)
if value < 100:
print(f"你数学要加油!100以内的计算以后尽量心算!")
return func(a,b)
else:
return func(a,b)
return f
@my_wrap
def add_two(a, b):
value = a + b
print("a + b : ", value)
@my_wrap
def subtract(a,b):
value = a - b
print("a - b : ",value)
@my_wrap
def multiply(a,b):
value = a * b
print("a * b : ",value)
@my_wrap
def divide(a,b):
value = a / b
print("a * b : ",value)
@my_wrap
def mode(a,b):
value = a // b
print("a * b : ",value)
print("\n")
print("add_two_same: ")
add_two_same(1,2)
print("\n")
print("fix ------->")
print("\n")
print("method 1 : add_two_new: ")
add_two_new(1,2)
print("\n")
print("method 2: @my_wrap: ")
add_two(1,2)
print("\n")
print("wrap的扩展的价值,不仅仅适用于add_two.....,它是一种框架和方法!")
print("subtract: ")
subtract(3,2)
print("divide : ")
divide(3,2)
print("multiply: ")
multiply(3,2)
print("mode : ")
mode(3,2)
下面输出表明:装饰器的效果达到了;另外,也实现了横向扩展。
|