在python中编程碰到过这样一件事情,需要给大量的函数做相同的操作,这样每个函数都去实现一遍这个功能显然是浪费时间。
#这是一个装饰器函数
def DecoratorFunc(func):
#Function就是对传入的func函数的包装,以便加入更多的功能
def Function():
printf('hello world')#简单的做一些额外操作,可以是其它操作
return func
return Function
现在有了装饰器函数,如何应用到其它函数上呢,用@来使用,如下
@DecoratorFunc
def run():
printf('my run function')
上面的函数就应用了DecoratorFunc这个装饰器的方法,则当我们调用run这个函数的时候,程序的运行是这样的,它先把run这个函数传入DecoratorFunc这个函数里面,然后对其进行简单的工作后返回结果,如果是上面的写法的话,最后输出应该是
hello world
my run function
这两句
这里只是简单的例子,装饰器函数可以做的很丰富
如果像上面的run函数有参数的话,则可以用下面的包装函数,多了参数而已
def DecoratorFunc(func):
#*args表示元祖参数,**kargs表示字典参数
def Function(*args,**kargs):
printf('hello world')
return func(*args,**kargs)
return Function
#这是一个装饰器函数
def DecoratorFunc(func):
#Function就是对传入的func函数的包装,以便加入更多的功能
def Function():
printf('hello world')#简单的做一些额外操作,可以是其它操作
return func
return Function
现在有了装饰器函数,如何应用到其它函数上呢,用@来使用,如下
@DecoratorFunc
def run():
printf('my run function')
上面的函数就应用了DecoratorFunc这个装饰器的方法,则当我们调用run这个函数的时候,程序的运行是这样的,它先把run这个函数传入DecoratorFunc这个函数里面,然后对其进行简单的工作后返回结果,如果是上面的写法的话,最后输出应该是
hello world
my run function
这两句
这里只是简单的例子,装饰器函数可以做的很丰富
如果像上面的run函数有参数的话,则可以用下面的包装函数,多了参数而已
def DecoratorFunc(func):
#*args表示元祖参数,**kargs表示字典参数
def Function(*args,**kargs):
printf('hello world')
return func(*args,**kargs)
return Function