Bestätigung, die nicht interessant ist.
Ich war besorgt, ob der Beendigungsprozess des Kontextmanagers ordnungsgemäß aufgerufen werden würde, wenn er in den Block der with-Anweisung zurückkehrt.
Zusammenfassend ist es okay.
withreturn.py
class Some(object):
def add(self, x, y):
return x + y
def close(self):
print "Closed"
from contextlib import closing
def foo(x):
with closing(Some()) as some:
return some.add(x, 10)
print foo(16)
# Closed
#=> 26
Der Beendigungsprozess wird auf diese Weise aufgerufen.