У меня есть несколько кодов ниже, но я не знаю, что делает утверждение yield
. Если я только позвоню f.foo()
, ничего не будет напечатано. Однако, если вызывается f.test()
, сначала будет напечатан список a
, затем будет напечатана строка OK
и, наконец, список b
. Так что же делает сингл yield
в целом?
from contextlib import contextmanager
class Foo(object):
@contextmanager
def foo(self):
a = [1, 2, 3]
print (a)
yield
b = [2, 3, 4]
print (b)
def test(self):
with self.foo():
print ("OK")
if __name__ =="__main__":
f = Foo()
f.foo()