python 装饰器简介

24、装饰器
    1、@ + 函数名:#1自动执行outer函数并且将下面的函数名f1当做参数传递
                  #2将outer函数的返回值,重新赋值给f1.
def outer(func):
    def inner():
        print('before')
        r = func()
        print('after')
        return r      ==>有返回值时这么处理。
    return inner
@outer
def f1():
    print('nihao')
    return 'nimei'
注意:定义函数,未调用函数内部不执行;函数名代指的函数的整体。
2、应用:
def outer(func):
    def inner(*args,**kwargs):
        print('before')
        r = func(*args,**kwargs)
        print('after')
        return r
    return inner
@outer
def f1():
     pass
@outer
def f2():
     pass
     .......
@outer
def    f100():
          pass
 
3、有参数时: 万能参数。。
def outer(func):
    def inner(*args,**kwargs):
        print('before')
        r = func(*args,**kwargs)
        print('after')
        return r
    return inner
@outer
def f1(arg):
    print(arg)
    return 'nimei'
@outer
def f2(a,b):
     print(a,b)
posted @ 2016-08-09 16:18  哈嘉好啊  阅读(177)  评论(0编辑  收藏  举报