zoukankan      html  css  js  c++  java
  • 【python3】yield 关键字解读

    python 关键字之yield

    yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator

    实例代码

    def yield_test(n):  
        for i in range(n):  
            yield call(i)  
            print("i=",i)  
        #做一些其它的事情      
        print("do something.")      
        print("end.")  
      
    def call(i):  
        return i*2  
      
    #使用for循环  
    for i in yield_test(5):  
        print(i,",")  
    

    运行结果:

    >>> 
    0 ,
    i= 0
    2 ,
    i= 1
    4 ,
    i= 2
    6 ,
    i= 3
    8 ,
    i= 4
    do something.
    end.
    >>> 
    

    解读

    1. 带有yield的函数理解为一个生成器
    2. yield(yield的参数返回给调用者)就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始
    3. 依次迭代生成0 2 4 6 8,所以说生成器只迭代一次。由于使用推导式迭代的对象保存在内存中,不使用与大量数据时,生成器则只会使用一次
    4. send(msg)与next()都有返回值,(send可以强行修改上一个yield表达式的值)它们的返回值是当前迭代遇到yield时,yield后面表达式的值,其实就是当前迭代中yield后面的参数
    5. 第一次调用时必须先next()或send(None),否则会报错,send后之所以为None是因为这时候没有上一个yield。可以认为.next() 等同于 .send(None)



    参考资源

    彻底理解Python中的yield,千若逸

  • 相关阅读:
    cnpm与npm指定有什么区别?
    Node.js与VUE安装及环境配置之Windows篇
    kafka和rabbitmq对比
    .NET笔记题库(一)
    API网关的用处
    C#问答题与附解收集(三)
    Error Code: 1175
    有时间测试dism
    sublime 3103liense
    weblogic 安装和部署项目(原创)
  • 原文地址:https://www.cnblogs.com/yanshanbei/p/12258701.html
Copyright © 2011-2022 走看看