Python Generator 运行细节验证

时间:2023-03-09 13:37:31
Python Generator 运行细节验证

今天来__next__和send, 改天来throw和close

class A:
def __setattr__(self, key, val):
print('set %s to %s'%(key, val))
self.__dict__[key] = val def G():
e = A()
i = 0
while 1:
e.x = (yield i)
print(' e.x is %s'%e.x)
i+=1 def p(s):
print(' out put: %s\n'% s) g = G() p(next(g))
p(next(g))
p(g.send('x1'))
p(g.send('x2'))
p(next(g))

结果:

>>>
out put: 0 set x to None
e.x is None
out put: 1 set x to x1
e.x is x1
out put: 2 set x to x2
e.x is x2
out put: 3 set x to None
e.x is None
out put: 4