• python生成器中yield和send分析


    生成器

    在python中生成器是指用代码实现迭代器的的功能本质还是迭代器,只不过是代码实现迭代器功能。在python中生成器是由函数实现的,通常我们在函数中加入yeild就可以实现生成器。

    生成器中yield

    #定义一个函数
    def func():
        print(111)
        yield  3
        print(222)
    g=func()
    

    运行上面代码你会发现函数根本没有执行,因为此时g是一个生成器对象,生成器是不会自己运行的,需要你调用next方法才会运行,并且每次遇到yield就会停止,继续调用next方法才会继续运行直到下一个yield。

    def func():
        print(111)
        yield  3
        print(222)
    g=func()
    print(g.__next__())
    

    运行结果:

    可以看打印了111,222并没有打印,说明函数运行到yield就停止了,3是yield的返回值。

    总结:

    yield的作用主要有两个:1、暂定当前函数的运行。2、可以返回值给调用者

    send的用法

    send的用法类似于next()方法都可以使函数继续运行,并且可以传送值给上一个yield

    def func1():
        # print(1)
        count = yield 6
        print(count)
        # print(2)
        count1 = yield 7
        print(count1)
        # print(3)
        yield 8
    
    # g = func1()
    # next(g)
    # # g.send('alex')
    # g.send('alex')
    # g.send('太白')
    # g.send('太白')
    
    

    总结:

    send 与next一样,也是对生成器取值(执行一个yield)的方法。
    send 可以给上一个yield 传值。
    第一次取值永远都是next。
    最后一个yield 永远也得不到send传的值。

  • 相关阅读:
    MySql学习2
    Java学习:JDBC
    MySql学习
    Java学习:网络编程
    Java学习:反射
    Java学习:多线程(2)
    Java学习:多线程
    .net后台webclient用post方式发送文件和数据
    实用
    day&day
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/9826545.html
Copyright © 2020-2023  润新知