我需要参数化生成器。这样的一个将在调用 .next(arg) 时接受参数。 在这种特定情况下,我希望生成器在 arg 为 True 时更改为 +1,为 False 时更改为 -1。
这在Python中可能吗?
最佳答案
使用.send
生成器实例上的方法允许您将状态注入(inject)生成器。这使得这样的事情成为可能:
>>> def mygen():
... i = 0
... sign = 1
... while True:
... val = yield sign*i
... if val is not None:
... sign = 1 if val else -1
... i += 1
...
>>> g = mygen()
>>> next(g)
0
>>> next(g)
1
>>> next(g)
2
>>> g.send(False)
-3
>>> next(g)
-4
>>> next(g)
-5
>>> g.send(True)
6
>>> next(g)
7
请注意,next(g)
相当于g.send(None)
。
关于python - 参数化生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49183564/