python中的yield详解
发布时间:2025-11-28 20:55:42

在最后一篇文章中,我们谈到了python中的return。它在程序函数中返回某个值。返回后,函数不会继续执行并完全结束。你知道python中还有另一种返回值的方法吗?yield。带yield的函数是迭代器。当函数返回到某个值时,它将停留在某个位置。返回函数值后,它将继续在前面停留的位置执行,直到程序结束。
yield的功能:返回一个可以用来迭代(for循环)的生成器,其应用场景通常是一个包含循环函数的需要返回一系列值的生成器。
一、迭代器迭代器有两种基本方法:创建迭代器iter() 和 next()访问迭代器。可直接作用于for循环的对象统称为可迭代对象:Iterable一种是集合数据类型,如list、tuple、dict、set、str等;
一种是generator,包括生成器和带yield的generator function
迭代器对象从集合的第一个元素开始访问,直到所有元素被访问结束。迭代器只能向前移动,不能向后移动。
二、生成器如果列表元素可以按照某种算法计算,后续元素可以在循环过程中不断计算,则无需创建完整的列表,从而节省大量空间。在Python中,这种循环计算机制称为生成器:generator。
三、yield:是生成器函数,返回是迭代器
yield表达式:defsquare(): forxinrange(4): yieldx**2 square_gen=square() forxinsquare_gen: print(x)例子:生成器函数
#包含yield关键字,将成为生成器函数
#调用函数不会执行语句
deffoo():
print('Starting...')
whileTrue:
res=yield4
print("res:",res)
#未执行以下调用函数。您可以先注释以下句子
#运行代码观察效果
g=foo()
print("第一次调用执行结果:")
print(next(g))
print("*"*100)
print("第二次调用执行结果:")
print(next(g))
print("*"*100)第一次调用执行结果: Starting... 4 ******************************************************************** 第二次调用执行结果: res:None 4 ********************************************************************
通过迭代器、生成器和yield的介绍,你对yield你知道什么吗?yield迭代器和生成器的使用是不可分割的,迭代器和生成器的运行也是不可分割的yield。
下一篇 python如何输出字符串对齐?
