1、装饰没有参数的函数
def function(func): #定义了一个闭包
def func_in(): #闭包内的函数
print('这里是需要装饰的内容,就是需要添加的内容')
func() #调用实参函数。
return func_in
def test(): #需要被装饰修改的函数。
print('无参函数的测试')
test = function(test) #装饰器的原理就是将原有的函数名重新定义为以原函数为参数的闭包。
test() 这里再次掉用test()的时候,其实是将会调用闭包内的函数func_in()。所以将会起到装饰修改的作用,最后会再次调用原函数test()。
@function #装饰器的python写法,等价于test = function(test),并且无需调用当代码运行道这里,Python会自动运行。
def test():
print('无参函数的测试')
test() #这里再次调用函数时,将会产生修改后的效果。
2、装饰带有参数的函数
def function(func): #定义了一个闭包
def func_in(*args,**kwargs): #闭包内的函数,因为装饰器运行的实则是闭包内的函数,所以这里将需要有形参用来接收原函数的参数。
print('这里是需要装饰的内容,就是需要添加的内容')
func(*args,**kwargs) #调用实参函数,并传入一致的实参。
return func_in
@function #装饰器的python写法,等价于test = function(test) .
def test():
print('无参函数的测试')
test(5,6) #这里再次掉用test()的时候,其实是将会调用闭包内的函数func_in()。所以将会起到装饰修改的作用,最后会再次调用原函数test()。