<p>这个怎么样?你知道吗</p>
<pre><code>def do_it(func, *args,suppress_exc=None, **kwargs):
params = locals().copy()
suppress_exc= suppress_exc or (ValueError,)
try:
func(*args, **kwargs)
print("\nsweet %s worked" % (params))
return 0
except suppress_exc as e: #pragma: no cover
print("\nbummer %s failed" % (params))
return e
biglist = [200, 300, 400]
while True:
if not do_it(biglist.remove, 201):
break
if not do_it(biglist.pop, 6, suppress_exc=(IndexError,)):
break
if not do_it(biglist.remove, 200):
break
if not do_it(biglist.remove, 300):
break
if not do_it(biglist.remove, 400):
break
print("done:biglist:%s" % (biglist))
</code></pre>
<h3>输出:</h3>
<pre><code>bummer {'kwargs': {}, 'args': (201,), 'suppress_exc': None, 'func': <built-in method remove of list object at 0x106093ec8>} failed
bummer {'kwargs': {}, 'args': (6,), 'suppress_exc': (<class 'IndexError'>,), 'func': <built-in method pop of list object at 0x106093ec8>} failed
sweet {'kwargs': {}, 'args': (200,), 'suppress_exc': None, 'func': <built-in method remove of list object at 0x106093ec8>} worked
done:biglist:[300, 400]
</code></pre>