带有参数的装饰器

def wrapper_out(flag): # 装饰器本身的参数
    def wrapper(fn): # 目标函数
        def inner(*args, **kwargs): # 目标函数执行需要的参数
            if flag == True:
                print("问问金老板. 行情怎么样啊")
                ret = fn(*args, **kwargs) # 在执行目标函数之前
                print("金老板骗我. 恨你")
                return ret
            else:
                ret = fn(*args, **kwargs)  # 在执行目标函数之前
                return ret
        return inner
    return wrapper


# 语法糖 @装饰器
@wrapper_out(True) # 先执行wrapper_out(True) 返回一个装饰器   再和@拼接  @装饰器
def yue(): # 被 wrapper装饰
    print("走啊. 约不?")

yue()

  

posted @ 2018-12-14 16:36  =-=-  阅读(211)  评论(0编辑  收藏  举报