回答

收藏

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

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

如何在 Python 制作两个可执行以下操作的装饰器?* x: p$ T- H% J0 o- l. t0 J; k
    @makebold@makeitalicdef say():  return "Hello"4 {  [' H* W% p: O; h# O
…应该返回:  x6 T" M: x  m4 v1 \
    "Hello"& N& B4 I; v9 ^# E- a& ?8 X# y
我不是想HTML在实际应用程序中采用这种方式——只是想了解装饰器和装饰器链接是如何工作的。
& G8 R0 L  I  [8 }; G# _                                                               
0 C0 |; r% ^1 x  D    解决方案:                                                                7 D9 G& V0 o0 H8 h* S5 P
                                                                查看文件,了解装饰器是如何工作的。这是您的要求:
) j2 G1 s5 n( R! H# U3 q& I
    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"
    2 _" S% f" ^& T; J
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则