码迷,mamicode.com
首页 > 编程语言 > 详细

(1-6)python函数_生成器

时间:2017-08-29 12:42:22      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:send   return   while   div   延迟   iter   包子   producer   开始   

理解:

  我们先用一个通俗的比方来了解下生成器,去饭店吃饭时,我们点了菜单,厨师不是一次性把菜都上齐,而是一个个菜上。这里的厨师就是一个生成器对象。生成器是python一大特性,python使用生成器对延迟操作提供支持,只在都要好好的时候才产生结果,而不是立   即产生结果。

  1、生成器函数:常规函数定义,使用yield语句而不是return语句返回结果,yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次从它离开的地方继续执行

  2、生成器表达式:类似于列表,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表

  3、学习生成器需要先学习迭代器,判断是否为迭代器可以看是否有iter() 和next()方法

  4、生成器只能遍历一次


需求:

   使用生成器来现实一个点包子做包子的伪并发小程序


代码:

import time
def consumer(name):
    print("%s 点了包子啦!" %name)
    while True:
        baozi = yield
        print("包子[%s]来了,被[%s]吃了!" %(baozi,name))

def producer(name):
    c1 = consumer(liun)
    c2 = consumer(dyq)
    c1.__next__()
    c2.__next__()
    print("师傅开始准备做包子啦!")
    for i in [i+1 for i in range(10)]:
        if i%2 == 0:
            time.sleep(1)
            print("做了2个包子!")
            c1.send(i-1)
            c2.send(i)

producer("liun")

 

(1-6)python函数_生成器

标签:send   return   while   div   延迟   iter   包子   producer   开始   

原文地址:http://www.cnblogs.com/liuneng/p/7447226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!