装饰器初体验

原本写了一个函数:

def say_hello(data):
    print("hello {0}" .format(data))

领导要求在每个函数打印的时候加上说明:“debug  : xxx  say_hello()”

方法一:

粗暴一点的方法是直接拿出来写一个函数,每次都调用它:这种方法也可以实现,要是有100个函数要添加呢,万一又有一部分函数不需要了呢?维护起来有点恶心

def func(fp):
    print("debug  : xxx  {0}()" .format(fp.__name__))

def say_goodbay():
    func(say_goodbay)
    print("baybay")

say_goodbay()

方法二:使用装饰器,这种方法不改变原代码  *args,**kwargs

def add_values(func):
    def wrapper(*args,**kwargs):
        print("debug  : xxx  {0}()" .format(func.__name__))
        return func(*args,**kwargs)
    return wrapper

@add_values
def say_hello(data):
    print("hello {0}" .format(data))

say_hello('alibaba')

猜你喜欢

转载自www.cnblogs.com/nieliangcai/p/10644032.html
今日推荐