如何在Python中创建两个装饰器来执行以下操作?
@makebold
@makeitalic
def say():
return "Hello"
Run Code Online (Sandbox Code Playgroud)
...应该返回:
"<b><i>Hello</i></b>"
Run Code Online (Sandbox Code Playgroud)
我不是试图HTML在一个真实的应用程序中这样做 - 只是试图了解装饰器和装饰器链是如何工作的.
do_magic() # Throws exception, doesn't execute do_foo and do_bar
do_foo()
do_bar()
Run Code Online (Sandbox Code Playgroud)
try:
do_magic() # Doesn't throw exception, doesn't execute do_foo and do_bar
do_foo()
do_bar()
except:
pass
Run Code Online (Sandbox Code Playgroud)
try: do_magic(); except: pass
try: do_foo() ; except: pass
try: do_bar() ; except: pass
Run Code Online (Sandbox Code Playgroud)
有没有办法优雅地编写代码片段3?
do_magic()失败或没有,do_foo()而do_bar()应该执行.do_foo()失败,do_bar()应该执行.在Basic/Visual Basic/VBS中,有一个语句叫做On Error Resume Next这个.