回答

收藏

如何制作函数装饰器并将它们链接在一起?

技术问答 技术问答 229 人阅读 | 0 人回复 | 2023-09-12

如何在 Python 制作两个可执行以下操作的装饰器?
2 q+ a% @7 q7 a
    @makebold@makeitalicdef say():  return "Hello"
    ( F: R5 N: Q: ^2 `
…应该返回:8 E" z1 i' ]3 K
    "Hello") ?7 k: A( Y, r: c  W0 m+ U: h
我不是想HTML在实际应用程序中采用这种方式——只是想了解装饰器和装饰器链接是如何工作的。: ]/ B) A; s$ q- S
                                                               
) S" z0 a" S/ _6 ]/ T8 ?( `$ [    解决方案:                                                                6 l: c5 G) b7 g, S  d) A
                                                                查看文件,了解装饰器是如何工作的。这是您的要求:
" P0 |3 j/ R- V3 B( e
    from functools import wrapsdef makebold(fn):    @wraps(fn)    def wrapper(*args,**kwargs):        return ""   fn(*args,**kwargs)   ""    return wrapperdef makeitalic(fn):    @wraps(fn)    def wrapper(*args,**kwargs):        return ""   fn(*args,**kwargs)   ""    return wrapper@makebold@makeitalicdef hello():    return "hello world"@makebold@makeitalicdef log(s):    return sprint hello()        # returns "hello world"print hello.__name__ # with functools.wraps() this returns "hello"print log('hello')   # returns "hello"; B  J: o" O0 s2 ]
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则