python生成器generator用法实例分析
本文实例讲述了python生成器generator用法。分享给大家供大家参考。具体如下:
使用yield,可以让函数生成一个结果序列,而不仅仅是一个值
例如:
defcountdown(n): print"countingdown" whilen>0: yieldn#生成一个n值 n-=1 >>>c=countdown(5) >>>c.next() countingdown 5 >>>c.next() 4 >>>c.next() 3
next()调用生成器函数一直运行到下一条yield语句为止,此时next()将返回值传递给yield.而且函数将暂停中止执行。再次调用时next()时,函数将继续执行yield之后的语句。此过程持续执行到函数返回为止。
通常不会像上面那样手动调用next(),而是使用for循环,例如:
>>>foriincountdown(5): ...printi ... countingdown 5 4 3 2 1
next(),send()的返回值都是yield后面的参数,send()跟next()的区别是send()是发送一个参数给(yieldn)的表达式,作为其返回值给m,而next()是发送一个None给(yieldn)表达式,这里需要区分的是,一个是调用next(),send()时候的返回值,一个是(yieldn)的返回值,两者是不一样的.看输出结果可以区分。
defh(n): whilen>0: m=(yieldn) print"mis"+str(m) n-=1 print"nis"+str(n) >>>p=h(5) >>>p.next() 5 >>>p.next() misNone nis4 4 >>>p.send("test") mistest nis3 3
希望本文所述对大家的Python程序设计有所帮助。