有人能举例说明为什么与Python生成器函数相关的"发送"功能存在吗?我完全理解屈服函数.但是,发送功能让我很困惑.有关此方法的文档很复杂:
generator.send(value)
Run Code Online (Sandbox Code Playgroud)
恢复执行并将值"发送"到生成器函数中.value参数成为当前yield表达式的结果.send()方法返回生成器产生的下一个值,如果生成器退出而不产生另一个值,则引发StopIteration.
那是什么意思?我认为价值是功能的输入?短语"send()方法返回生成器产生的下一个值"似乎也是yield函数的确切目的; yield返回生成器产生的下一个值...
有人能给我一个利用发送器生成器的例子吗?
是否可行,如果可行,是可取的,如果是这样,建议的方法是什么来装饰产生价值的函数?
例如,考虑一下我编写的这个虚构的例子
def foobar_creator(func):
def wrapped(**kwargs):
res = func(**kwargs)
flag = True
for k,v in kwargs:
if res % v == 0:
flag = False
yield k
if flag:
yield res
return wrapped
@foobar_creator
def generic_yielder(**kwargs):
for i in xrange(sys.maxint):
yield i
for i in generic_yielder(foo=3, bar=5, foobar=15):
print i
Run Code Online (Sandbox Code Playgroud)