maple412 发表于 2015-01-08 20:04

关于yield的使用方法疑问

import itertools
def frange(start,end=None,inc=1.0):
    for i in itertools.count():
      result=start+i*inc
      yield result

ret=frange(0,100)
print ret.next()
print ret.next()
print ret.next()
ret.send(10)
print ret.next()
print ret.next()

输出结果为:
0.0
1.0
2.0
4.0
5.0
ret.send(10)为什么没有生效呢?

icymirror 发表于 2015-01-09 09:46

回复 1# maple412
因为你没有在frange里面使用yield去取得send的值。

maple412 发表于 2015-01-09 14:51

回复 2# icymirror
改成这样?
import itertools
def frange(start,end=None,inc=1.0):
    for i in itertools.count():
                val=(yield result)
                if val is not None:
                     result=val
                else:
                     result=start+i*inc


   
页: [1]
查看完整版本: 关于yield的使用方法疑问