装饰器初体验

本来写了一个函数:app

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

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

方法一:spa

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

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

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

say_goodbay()

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

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')
相关文章
相关标签/搜索