def foo():
pass
def bar():
print 'good bay'
两个功能如打击
现在我想在 foo run 完成后运行 bar 函数
有没有类似类使用的方法__del__
?
据我所知,在课堂方法中我可以使用__del__
就像下面这样:
class A(object):
def __init__(self):
pass
def __del__(self):
bar()
但我不能用foo.__del__
还有其他方法可以做到这一点吗?
这就是装饰器的用途。这个装饰器,用在foo
with bar
作为参数将运行bar
after foo
并仍然返回foo
结果。它将适用于具有任意数量参数的函数。
def run_before(lastfunc, *args1, **kwargs1):
def run(func):
def wrapped_func(*args, **kwargs):
try:
result = func(*args, **kwargs)
except:
result = None
finally:
lastfunc(*args1, **kwargs1)
return result
return wrapped_func
return run
def bar():
print 'goodby'
@run_before(bar)
def foo():
print "hello"
foo()
编辑:添加了错误处理。谢谢@Björn
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)