在看了公众号Python那些事对装饰器的解释后,有了一些自己的理解。
首先,装饰器的的返回值是接力棒。被当做参数的函数作为返回值返回到装饰器的内部函数,然后装饰器返回值是内部函数,即最终装饰器的返回值是当做参数的函数。
装饰器的作用:由于在装饰器内部定义了新函数并且装饰器并不会改变作为参数的函数,即就可以在内部函数中添加一些新功能(这一点可以详细看公众号),最终实现在不改变原函数的前提下,提升原函数的功能。
列子:
def square_it(func):
def new_function(*args,**kwargs):
result = func(*args,**kwargs)
square = result *result
print("原函数的值:%d" % result)
print("新增加的求平方的功能:%d" %square)
return new_function
@square_it
def add_ints(a,b):
c = a+b
return c
add_ints(3,5)
新增加的求平方的功能:64