这就是他们制作装饰器的目的!看看一个装饰器,它将所有参数都小写并传递给某个函数:
def lower_args(func):
@functools.wraps(func)
def _wrapper(*args, **kwargs):
l_args = map(str.lower, args)
l_kwargs = {(name, str.lower(value)) for (name, value) in kwargs}
return func(*l_args, **l_kwargs)
return _wrapper
像这样使用:
@lower_args
def foo(a, b, c):
#and your code goes here
做你想做的事,稍微改变语法
def to_lower(mod_func):
def deco(func):
@functools.wraps(func)
def _wrapper(*args, **kwargs):
return func(*map(mod_func, args), {(k, mod_func(v)) for (k,v) in kwargs})
return _wrapper
return deco
像这样使用:
@to_lower(my_function)
def foo(a, b, c):
#your code goes here