【发布时间】:2016-01-20 23:27:51
【问题描述】:
如何检查某个黑盒生成器是在等待值还是正在返回值?我的意思是管理以下生成器:
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())
【问题讨论】: