0
如何檢查一些黑匣子發生器是否正在等待該值或正在返回值?我的意思是管理以下發電機:檢查發生器是否正在等待「發送」或產生值
def gen():
a = yield
yield a
yield a+1
yield a+2
可以是以下:
g = gen()
g.next()
print g.send(5)
print g.next()
print g.next()
和不同發生器,例如:
def gen():
a = yield
b = yield
yield a+b
它需要也不同,對例如:
g = gen()
g.next()
g.send(1)
print g.send(2)
所以問題是我如何才能選擇發送生成器中的值並僅在黑盒(第三方)生成器的情況下從中獲取結果?我需要寫下面的代碼:
values = [1, 2, 3]
results = list()
g = gen()
g.next()
for v in values:
# needs this magic
if g.__awaits__: # in case of "x = yield" expression
results.append(g.send(v))
elif g.__yields__: # in case of "yield x" expression
results.append(g.next())