装饰器的作用就是在不动函数代码的情况下,给函数加额外功能
简单的装饰器:
def waper(func):
        def inner(*args,**kwargs):
                print("begin the func")
                return fun(*args,**kwargs)
        return inner
调用:
@waper
def bar():
        print ("I'm a bar")
相当于:bar = waper(bar)
@a
@b
@c
def  f():
等效于:f=a(b(c(f)))
如果有多个装饰器的话,多个装饰器的调用顺序是自下往上,但是运行时的执行顺序是自上往下!!!