小编ash*_*ods的帖子

装饰装饰:试着理解它

我正在尝试了解装饰装饰器,并想尝试以下内容:

假设我有两个装饰器并将它们应用于函数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)

python decorator

21
推荐指数
2
解决办法
8649
查看次数

标签 统计

decorator ×1

python ×1