当前位置: 首页 > 问答 > Python编程 > 问答详情

python中的yield如何理解?

12月08日 10:04496人阅读
宋老师 Python编程

一、迭代器

迭代器有两个基本的方法:创建迭代器iter() 和 访问迭代器next()。

可以直接作用于for循环的对象统称为可迭代对象:Iterable

一类是集合数据类型,如list、tuple、dict、set、str等;

一类是generator,包括生成器和带yield的generator function

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

二、生成器

如果列表元素可以按照某种算法推算出来,可以在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

三、yield:是一个生成器函数,返回的是一个迭代器

yield表达式:

def square():

for x in range(4):

yield x ** 2

square_gen = square()

for x in square_gen:

print(x)

实例:生成器函数

# 包含yield关键字,就变成了生成器函数

# 调用函数并不会执行语句

def foo():

print('Starting.....')

while True:

res = yield 4

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。

来自标签:

职业技能申请领取
您的姓名
您的电话
意向课程
点击领取

环球青藤

官方QQ

扫描上方二维码或点击一键加群,免费领取大礼包,加群暗号:青藤。 一键加群

问答来自

宋老师 Python编程
好评率85% 浏览496

相关问题

python中实现字符串分割的方法有哪些?
魏老师 Python编程
python中日期与字符串如何相互转换?
刘老师 Python编程
python中如何使用zip函数将列表合并为字典?
宋老师 Python编程
课程咨询 学员服务 公众号

扫描关注微信公众号

APP

扫描下载APP

返回顶部