python的装饰器decorator

发布时间:2019-09-20 07:29:22编辑:auto阅读(1587)

    在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

关键字