首页 / 知识
python中的yield详解
2023-11-12 13:29:00
上篇我们说到了python中的return,它在程序函数中返回某个值,返回之后函数不在继续执行,彻底结束。那你知不知道在python中还有一种返回值的方法,那就是yield。带有yield的函数是一个迭代器,函数返回某个值时,会停留在某个位置,返回函数值后,会在前面停留的位置继续执行,直到程序结束。
yield的作用:返回一个可以用来迭代(for循环)的生成器,它的应用场景通常为一个需要返回一系列值的,含有循环的函数中。
一、迭代器
迭代器有两个基本的方法:创建迭代器iter()和访问迭代器next()。
可以直接作用于for循环的对象统称为可迭代对象:Iterable
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generatorfunction
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
二、生成器
如果列表元素可以按照某种算法推算出来,可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在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中的yield详解,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规Python当中生成器和迭代器的使用
Python当中生成器和迭代器的使用,数据,老板,概念,员工,代码,收入,位置,生成器,工具,地方,我当初第一次学到迭代器和生成器的时候,并没有太在意列举Python面向对象中带双下划线的
列举Python面向对象中带双下划线的特殊方法,信息,代码,培训,对象,属性,方法,实例,字符串,里边,内容,__new__:生成实例__init__:生成实例的属性_python内置函数:map、reduce、filte
python内置函数:map、reduce、filter的用法和区别,数据,培训,数字,函数,序列,内容,元素,参数,列表,个数,map:根据函数对指定序列做映射map参数Python 条件对象
Python 条件对象,状态,培训,对象,条件,线程,方法,底层,发生,场景,典型,条件对象总是与某种类型的锁对象相关联,锁对象可以通过传入获得,或者在Python 事件对象
Python 事件对象,通信,培训,线程,事件,对象,内部,标志,信号,机制,以上,一个线程发出事件信号,其他线程等待该信号,这是最简单的线程之间通信机Python之什么是面向对象?
Python之什么是面向对象?,设计,流程,代码,个体,大唐,对比,培训,模子,上帝,对象,OOP(ObjectOrientedPrograming)编程是利用“类”和“对象”来Python 递归函数
Python 递归函数,第一,第三,培训,个人,人大,函数,程序,条件,以此类推,例题,递归:函数调用自己本身递归的核心:1)递归推导式2)递归终止条件不过python 列表元素的删除
python 列表元素的删除,代码,数据,位置,连续,异常,首次,培训,元素,列表,空隙,使用del命令删除列表中的指定位置上的元素。>>>a_list=[3,5,7,9python 列表元素访问与计数
python 列表元素访问与计数,异常,首次,培训,列表,元素,下标,对象,方法,次数,以上,使用下标直接访问列表元素,如果指定下标不存在,则抛出异常。>Python基础之numpy中的常见函数有
Python基础之numpy中的常见函数有哪些,数组,基础,培训,元素,方向,矩阵,函数,乘积,维度,索引,有些Python小白对numpy中的常见函数不太了解,今天python max函数中key是如何用的?
python max函数中key是如何用的?,工资,培训,函数,句子,单词,绝对值,参数,字典,列表,元素,在max函数使用的过程中,经常会有到key。在python的ma