我正在尝试了解装饰装饰器,并想尝试以下内容:
假设我有两个装饰器并将它们应用于函数hello:
def wrap(f):
def wrapper():
return " ".join(f())
return wrapper
def upper(f):
def uppercase(*args, **kargs):
a,b = f(*args, **kargs)
return a.upper(), b.upper()
return uppercase
@wrap
@upper
def hello():
return "hello","world"
print hello()
Run Code Online (Sandbox Code Playgroud)
然后我必须开始为其他函数添加其他装饰器,但一般来说,wrap装饰器将"包装所有这些"
def lower(f):
def lowercase(*args, **kargs):
a,b = f(*args, **kargs)
return a.lower(), b.lower()
return lowercase
@wrap
@lower
def byebye():
return "bye", "bye"
Run Code Online (Sandbox Code Playgroud)
现在我如何写一个装饰器,我可以装饰我的下装饰器和上装饰器:
@wrap
def lower():
...
@wrap
def upper():
...
Run Code Online (Sandbox Code Playgroud)
通过以下方式实现与上述相同的结果:
@upper
def hello():
...
@lower
def byebye():
...
Run Code Online (Sandbox Code Playgroud)