• Python yield 用法


     

    一、环境

      python 3.6

    二、yield 说明

      yield 是一个生成器,可以用于迭代。也是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值。

    重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。

    三、代码实战

    # -*- coding: utf-8 -*-
    
    ## for 循环调用
    ## 第一次循环 n = 2, i = 0; yield i*2 = 0 打印 for i = 0 ,停在这个位置
    ## 第二次循环 执行下一个语句执行,打印 after i = 0 ; i= 1 满足循环条件 yield i*=2 ,打印 for i = 2
    ## 第三次循环 执行下一个语句执行,打印 after i = 1; i= 2 不满足循环条件 退出 。打印 others
    
    def yield_kim(n): # 0 1
        for i in range(n):
            yield i*2  # yield就类似 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后开始
            print("after i=",i)
        print("<--------------Others-------------->")
    
    ## for cycle
    for i in yield_kim(2): 
        print("for i=",i)
        
    #第一次输出  for i = 0
    #第二次输出  after i= 0 ; for i= 2
    #第三次输出  after i= 1 ; <--------------Others-------------->
    
        
    ## 普通调用----------------------
    def yield_kim2(n):
        print("n =",n) 
        a = yield n*2
        print("a = ",a)
        
    k = yield_kim2(2)
    k2 = next(k)   # 执行后 yield n*2 表达式的值为 4 ,a 还未赋值
    
    #输出 n = 2
    View Code

    四、结果截图

  • 相关阅读:
    因子个数筛
    原根
    Pollard Rho (大数分解算法)
    Miller-Rabin(素数测试算法)
    离不开的微服务架构,脱不开的RPC细节(值得收藏)!!!
    微服务架构,多“微”才合适?
    互联网架构,究竟为啥要做服务化?
    markdown
    docker安装、启动(挂载外部配置和数据)
    程序员代码面试指南上(1-3)
  • 原文地址:https://www.cnblogs.com/kimbo/p/9454211.html
Copyright © 2020-2023  润新知