装饰器@decorator理解(需补充.....)

def w1(fun):
    def inner1(arg):
        print("h")
        return fun(arg)

    return inner1


@w1
def w(arg):
    print('ello')

w()

理解:1、代码从上到下执行,将w1放内存,然后遇到了@w1

     2、@w1就会把w函数,当作参数放入w1中,既:fun = w,就会执行w1函数

     3、执行w1函数时,将inner1放内存,并且返回一个inner1函数名给w 既然 w = inner1

         4、此时w()函数仍然存在,与其同名的w变量(既inner1)指向新的函数inner1()

   5、继续往下执行,当遇到w()时,先执行新的w()函数(既inner()函数),打印出h

     6、在调用原始函数,打印ello

posted @ 2017-09-07 00:07  Peaunt  阅读(261)  评论(0编辑  收藏  举报