gpt4 book ai didi

python - 如何制作功能装饰器链?

转载 作者:行者123 更新时间:2023-11-28 19:07:26 24 4
gpt4 key购买 nike

如何在Python中创建两个decorator来执行以下操作?

@makebold
@makeitalic
def say():
return "Hello"

…应该返回:
"<b><i>Hello</i></b>"

我并不是试图在一个真正的应用程序中以这种方式创建 HTML——只是试图理解decorators和decorator链式是如何工作的。

最佳答案

查看the documentation了解装饰人员的工作原理。以下是您的要求:

from functools import wraps

def makebold(fn):
@wraps(fn)
def wrapped(*args, **kwargs):
return "<b>" + fn(*args, **kwargs) + "</b>"
return wrapped

def makeitalic(fn):
@wraps(fn)
def wrapped(*args, **kwargs):
return "<i>" + fn(*args, **kwargs) + "</i>"
return wrapped

@makebold
@makeitalic
def hello():
return "hello world"

@makebold
@makeitalic
def log(s):
return s

print hello() # returns "<b><i>hello world</i></b>"
print hello.__name__ # with functools.wraps() this returns "hello"
print log('hello') # returns "<b><i>hello</i></b>"

关于python - 如何制作功能装饰器链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45257698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com