Ric*_*eur 4 python yield python-2.4 try-finally
我坚持使用python2.4,所以我不能使用带有生成器的finally子句yield.有什么方法可以解决这个问题吗?
我找不到如何在python 2.4中解决这个限制的任何提及,我不是我想到的解决方法(主要涉及__del__并试图确保它在合理的时间内运行)的忠实粉丝不太吸引人.
小智 7
您可以复制代码以避免finally块:
try:
yield 42
finally:
do_something()
Run Code Online (Sandbox Code Playgroud)
变为:
try:
yield 42
except: # bare except, catches *anything*
do_something()
raise # re-raise same exception
do_something()
Run Code Online (Sandbox Code Playgroud)
(我没有在Python 2.4上尝试过这个,你可能需要查看sys.exc_info而不是上面的re-raise语句,如raise sys.exc_info[0], sys.exc_info[1], sys.exc_info[2].)
| 归档时间: |
|
| 查看次数: |
3657 次 |
| 最近记录: |