python函数第5天(day 24)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数第5天(day 24)相关的知识,希望对你有一定的参考价值。

可迭代的:对象下有__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)的主要内容,如果未能解决你的问题,请参考以下文章

Python100天学习笔记Day24 JS基本语法

Python100天学习笔记Day24 JS基本语法

补上:第24天学习python 内置函数输出对应的代码

python函数第6天(day 25)

python函数第7天(day 26)

第5天:Python 函数