考虑以下Python代码:
def values():
with somecontext():
yield 1
yield 2
for v in values():
print(v)
break
在这种情况下,Python是否保证生成器被正确关闭,因此上下文被退出?
我意识到,在实践中,由于引用计数和生成器的急切销毁,CPython将会是这种情况,但是Python是否保证这种行为呢?我确实注意到在Jython中它确实不起作用,那么这应该被认为是一个错误还是允许的行为?