回答

收藏

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

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

如何在 Python 制作两个可执行以下操作的装饰器?
8 t- j, l  g6 i+ \
    @makebold@makeitalicdef say():  return "Hello"; @- v; S# ]  `* u
…应该返回:+ d3 |% N3 }% P( b
    "Hello"
    0 F, f( P3 @$ @; S. a
我不是想HTML在实际应用程序中采用这种方式——只是想了解装饰器和装饰器链接是如何工作的。2 {; _- ]+ b2 e! E1 T
                                                               
9 O7 H9 m1 U3 @3 B    解决方案:                                                               
5 l, I0 j3 n' J                                                                查看文件,了解装饰器是如何工作的。这是您的要求:
0 r# N: x9 P: l- R7 f! E% U. |4 H7 n& A
    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"
    * A0 a+ f" a" o/ t- A, \: u
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则