Что делает сингл <yield>? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть несколько кодов ниже, но я не знаю, что делает утверждение 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()
...