带多个参数的装饰器

一、带多个参数的装饰器

def outer(func):
    def inner(a): # 需要补充参数
        print("before")
        ret = func(a) # 需要补充参数
        print("after")
        return ret
    return inner

def outer2(func):
    def inner(a,b): # 传2个参数
        print("before")
        ret = func(a,b) # 需要2个补充参数
        print("after")
        return ret
    return inner

@outer
def f1(args):# 带参数
    print(args)
    return "FFFF"

@outer2
def f2(args,args2):
    print(args,args2)
    return "FFFF"

test = f2("fafafafafa","test1")
print(test)

 

二、万能装饰器

def outer(func):
    def inner(*args,**kwargs): # 需要补充参数
        print("before")
        ret = func(*args,**kwargs) # 需要补充参数
        print("after")
        return ret
    return inner

@outer
def f1(args):# 带参数
    print(args)
    return "FFFF"

@outer
def f2(args,args2):
    print(args,args2)
    return "FFFF"

test = f2("fafafafafa","test1")
print(test)

 

posted @ 2017-08-28 14:33  mickle_deng1  阅读(109)  评论(0)    收藏  举报