yield生成器

本文详细介绍了Python中的生成器及其核心关键字yield。生成器允许函数在执行过程中暂停并保存状态,从而实现用完即弃的内存管理。通过使用next()函数或for循环,我们可以逐次获取生成器的值。此外,生成器在协同程序中发挥重要作用,使得函数可以在需要时从暂停的地方继续执行,有效避免了资源浪费。
摘要由CSDN通过智能技术生成

yield 返回的是生成器,yield 是一个类似 return 的关键字,迭代一次遇到yield时就返回yield后面(右边)的值。
重点是:下一次迭代时,从上一次迭代遇到的yield后面的代码(下一行)开始执行。

生成器:避免资源的浪费,用完就扔,创建生成器用()

genetator = (x*x for x in range(5))

for v in generator:
print(v) #对生成器中的每一个进行迭代。只能进行迭代一次,在进行迭代不会产生任何结果。

yield:
结果是一个生成器

打印结果

在这里插入图片描述

生成器的作用可以便于协同程序的运行 ,函数可以暂停或是挂起,需要的时候在从暂停的时候重新开始(线程)
>>> def gen():
	print("开始运行生成器")
	yield 1  #对于普通的return ,返回之后函数就结束了,但是对于yield,执行后面的代码之后是暂时挂起的状态,函数并没有停止,在此调用的时候会从下一个代码接着运行

	yield 2

>>> next(Gen)
	      
开始运行生成器# 若果要是不是用next方法,直接调用函数的话不会打印这句话
1
>>> next(Gen)
	      
2

>>> for i in gen(): #对于for循环,就相当于每次都执行next()方法。
	      print(i)

	      
开始运行生成器
1
2
>>> def gen():
	for i in range(3):
		print('diaoyong')
		yield i
		yield 2

		
>>> g = gen()
>>> next(g)
diaoyong
0
>>> next(g)
2
>>> next(g)
diaoyong
1

通过next()方法或者是应用for循环来实现yield的调用,与rerurn不同,生成器返回值的同时函数调用并不会终止,但是在return中,遇到return之后,函数就终止了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值