生成器

本文介绍了Python中的生成器,包括生成器函数的概念,使用yield关键字的特点,如何通过__next__()和next()方法执行函数体,send()方法的使用以及注意事项。还讲解了yield from用于遍历容器类型的功能,以及生成器表达式的语法。最后,探讨了生成器在实现多任务(如协程)中的重要作用。
摘要由CSDN通过智能技术生成


生成器的本质就是迭代器。
生成器包括两种:生成器函数 和 生成器表达式

一、生成器函数

  • 一个包含yield关键字的函数就是一个生成器函数。

生成器函数执行之后会得到一个生成器作为返回值,并不会执行函数体。
执行了__next__()方法之后才会执行函数体,并且获得返回值。
next()内置方法,内部调用生成器函数的__next__()方法。
yield和return相同的是可以返回值,但是不同的是yield不会结束函数。
yield不能和return共用,并且yield只能在函数内。

练习1:创建一个生成器,并且调用
def generator():
	print('zzz')
	yield
ret = generator()
print(ret)
# <generator object generator at 0x00000000021665E8>
# 返回一个生成器对象,并没有执行生成器中的函数体
# 调用__next__()方法执行函数体
ret.__next__()
练习2:创建一个生成器,并且设置返回值
def generator():
    print('zzz')
    yield 1
ret = generator() # 调用生成器函数的时候,不执行函数体,返回一个生成器对象
# res 变量用来接收返回值
res = ret.__next__() # 调用__next__()方法执行函数体,
print(res) # 1
练习3:创建生成器,定义多个yielddef generator():
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值