zoukankan      html  css  js  c++  java
  • 生成器(generator,yield),next,send

    #生成器
    def generator():
        for i in range(200):
            yield '哇哈哈%s' %i
    g = generator() #调用生成数函数,接受作用
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)

    def generator():
        for i in range(200):
            yield '哇哈哈%s' %i
    g = generator() #调用生成数函数,接受作用
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print(ret)
    num = 0
    for i in g:
        num += 1
        if num > 10:
            break
        print(i)

    生成器的作用:一条一条输出,输出一个获取一个,不像return,输出后就马上返回,不能执行后面的函数。

    !!!send 获取下一个值的效果和next基本一致,但是获取下一个值时,要给上一个yield的位置传递一个数据。

    !!!第一次使用生成器时,是用next获取下一个值,最后一个yield不能接受外部的值

    #next send
    def generator():
        print(123)
        content = yield 1
        print('======',content)
        print(456)
        yield 2 
    g = generator() #调用生成数函数,接受作用
    ret = g.__next__() #每执行一次g.__next__就是从生成器取值
    print('***',ret)
    ret = g.send('hello')  #send的效果和next一样
    print('***',ret)

     最后一个yield如果想使用的话,解决办法如下:

    def generator():
        print(123)
        content = yield 1
        print('======',content)
        print(456)
        arg = yield 2
        ''''''
        yield
  • 相关阅读:
    docker 的官方PHP镜像 如何修改 php.ini 配置
    数据结构和算法
    接口的幂等性
    linux ftp服务器设置,只允许用户访问指定的文件夹,禁止访问其他文件夹
    rabitmq + php
    微信上传客服消息图片
    golang Printf 函数有超过 10 个转义字符
    golang bufio.NewScarme
    springboot(一)
    springboot加入第三方jar,使用mvn打包
  • 原文地址:https://www.cnblogs.com/qq946487854/p/9867889.html
Copyright © 2011-2022 走看看