• Python 关键字 yield


    简介

    带有 yield 的函数在 Python 中被称之为 generator(生成器)。
    本篇主要讲解关键字 yield 的用法。
    该关键字与 return 有共同之处,均有返回数值作用,但是 yield 会记住当下的值,再次调用时,从使用 yield 的下一行继续运行。

    实例代码

    def yield_test(n):
        for i in range(n):
            yield call(i)
            print("i=", i)
        print("end.")
    
    
    def call(i):
        return i * 2
    
    
    # 使用for循环
    for i in yield_test(5):
        print(i, ",")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    过程解析

    先进入最外层 for 循环,进行第一次循环,运行 yield_test() 函数。
    在 yield_test() 函数中,n 为 5,进入 for 循环,i 为 0,此时调用了 call() 函数。
    在 call() 函数中 i 的值翻倍并返回,即返回 0。
    回到 yield_test() 函数中,使用关键字 yield,记录当前位置,并返回到最外层 for 循环。
    最外层 for 循环中,获取返回值 i 为 0,输出 “0 ,”。

    随后最外层 for 循环,进行第二次循环,运行 yield_test() 函数。
    在 yield_test() 函数中,n 为 5,从上次调用 yield 后一行继续运行,输出 “i= 0”,并进行二次 for 循环,与之前相同,此时该函数中 i 循环到 2,调用了 call() 函数。
    在 call() 函数中 i 的值翻倍并返回,即返回 2。
    回到 yield_test() 函数中,使用关键字 yield,记录当前位置,并返回到最外层 for 循环。
    最外层 for 循环中,获取返回值 i 为 2,输出 “2 ,”。

    接着最外层 for 循环,进行第三次循环,运行 yield_test() 函数。
    在 yield_test() 函数中,n 为 5,从上次调用 yield 后一行继续运行,输出 “i= 1”,并进行二次 for 循环,与之前相同,此时该函数中 i 循环到 2,调用了 call() 函数。
    在 call() 函数中 i 的值翻倍并返回,即返回 4。
    回到 yield_test() 函数中,使用关键字 yield,记录当前位置,并返回到最外层 for 循环。
    最外层 for 循环中,获取返回值 i 为 4,输出 “4 ,”。

    后序过程相似,直至 yield_test() 函数 for 循环结束,输出"end.",此时无返回值,最外层 for 循环结束。

    运行结果

    0 ,
    i= 0
    2 ,
    i= 1
    4 ,
    i= 2
    6 ,
    i= 3
    8 ,
    i= 4
    end.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    卡尔曼滤波介绍
    需求放缓、价格战升级、利润率持续恶化对小鹏汽车造成了严重影响
    关于docker的xuexi
    maven的私服
    程序员健康防猝指南6:[科学]运动
    数字人直播助力商家降本增效,AI数字人主播成为商家直播新选择
    ABB CMA120 3DDE300400面板
    C语言面试题 - 结构体对齐
    Postgres 常用命令/脚本 (运维版)
    网络爬虫 -- 验证码识别
  • 原文地址:https://blog.csdn.net/weixin_43820352/article/details/125994265