def func():
try:
yield
finally:
xxx
a=func()
a.next()
yyy
a为一个生成器,在调用next()方法后,会运行到yield, 然后继续运行next()后面的代码yyy。什么时候才会运行finally里的代码呢?经过测试,当无变量指向生成器时,会执行finally后的代码,如:
1.程序运行完成
2.指向生成器的变量a为方法内的局部变量,该方法已执行完成,a被释放
2.del a
3. a指向其他对象,如a=2,生成器没有变量指向