首页 > 编程语言 > 详细

python函数第5天(day 24)

时间:2017-08-23 09:44:53      阅读:213      评论:0      收藏:0      [点我收藏+]
可迭代的:对象下有__iter__方法的都是可迭代的对象

迭代器:对象.__iter__()得到的结果就是迭代器
迭代器的特性:
    迭代器.__next__() 取下一个值
    
    优点:
        1.提供了一种统一的迭代对象的方式,不依赖于索引
        2.惰性计算
        
    缺点:
        1.无法获取迭代器的长度
        2.一次性的,只能往后取值,不能往前退,不能像索引那样去取得某个位置的值
        
        
生成器:函数内带有yield关键字,那么这个函数执行的结果就是生成器

生成器本质就是迭代器
    def func():
        n=0
        while True:
             yield n
             n+=1
             
    g=func()

    res=next(g)
    res=next(g)

    for i in g:
        pass


总结yield的功能:
    1.相当于把__iter__和__next__方法封装到函数内部
    2.与return比,return只能返回一次,而yield能返回多次
    3.函数暂停已经继续运行的状态是通过yield保存的
    

    
    
    
    
    
yield的表达式形式:
    food=yield
    
def eater(name):
    print(%s start to eat %name)
    while True:
        food=yield
        print(%s eat %s %(name,food))
        
e=eater(zhejiangF4)
    

    #e.send与next(e)的区别
        #1.如果函数内yield是表达式形式,那么必须先next(e)
        #2.二者的共同之处是都可以让函数在上次暂停的位置继续运行,不一样的地方在于
            send在触发下一次代码的执行时,会顺便给yield传一个值
    
    


#协程函数的定义?
#协程函数的应用?

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    

 

python函数第5天(day 24)

原文:http://www.cnblogs.com/wanchenxi/p/7414456.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!