栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 关键字 yield

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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, ",")
过程解析

先进入最外层 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.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025963.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号