python - 参数化生成器?

标签 python parameters generator

我需要参数化生成器。这样的一个将在调用 .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/

相关文章:

python检查m个方法中的n个返回值是否为真

c# - 像 c++ 中的 c# 参数一样吗?

Swift:用 '!'定义函数参数有什么区别

java - 为什么 Java 和 PHP 的相同代码不起作用?

python - 如何将 HTTP header 内容长度添加到 Google Translate API 调用?

python - 使用 python 测试 postgresql 数据库时出错

python - SoupStrainer 可以有两个参数吗?

c - Ruby 1.9.1-p378 C 扩展 rb_block_call 怪异

python - 将yield生成器添加到python函数中

python - 从经常更新的文件中读取