我在下面有一些代码,但我不知道语句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()