Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 参数化发电机?_Python_Parameters_Generator - Fatal编程技术网

Python 参数化发电机?

Python 参数化发电机?,python,parameters,generator,Python,Parameters,Generator,我需要参数化发电机。将在调用.nextarg时接受参数的。 在这种特定情况下,我希望生成器在arg为True时更改为+1,在False时更改为-1 这在python中是否可行?在生成器实例上使用该方法可以将状态注入生成器。这使得类似的事情成为可能: >>> def mygen(): ... i = 0 ... sign = 1 ... while True: ... val = yield sign*i ... if va

我需要参数化发电机。将在调用.nextarg时接受参数的。 在这种特定情况下,我希望生成器在arg为True时更改为+1,在False时更改为-1

这在python中是否可行?

在生成器实例上使用该方法可以将状态注入生成器。这使得类似的事情成为可能:

>>> 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

注意,nextg相当于g.sendNone

这是我的最终版本:

def flip_flop(low=0, high=10):  
    i = 0
    while i >= low and i <= high :
        cond = yield i
        if cond : i += 1
        else    : i -= 1




 In [64]: ff = flip_flop()

 In [65]: ff.next()
 Out[65]: 0

 In [66]: ff.send(True)
 Out[66]: 1

 In [67]: ff.send(True)
 Out[67]: 2

 In [68]: ff.send(True)
 Out[68]: 3

 In [69]: ff.send(False)
 Out[69]: 2

可以在“for”循环中发送工作,或者它只在“while”中有效@user1019129为什么会有不同?无论如何,您可以很容易地检查它……您如何在for循环中发送参数?for循环的全部要点是结束与迭代器的交互,这样您就看不到它了;您将在语法中的什么位置插入args?