Python学习笔记|Python之yield理解

本文探讨了Python中的return和yield关键字。首先介绍了return的基本用法,它用于结束函数并返回一个值。然后重点讲解了yield,它将函数转化为生成器,使得函数在每次调用next()时返回一个值,而不会重新开始执行。通过yield,可以实现更高效、内存友好的迭代操作。最后提到了迭代器的概念,以及如何将可迭代对象转换为迭代器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yiled介绍

在了解yield之前,先了解return概念

1.return
  • return: 1个返回值

结束函数的运行,并且将结果返回给调用的地方

  • return:函数的返回值

返回对个返回值,其返回值会保存在一个元组中

如下:

	def sum(x,y):
	    return x,y
	
	num = sum(1,2) 
	print(num)
2.yield

使用yield会将一个函数变成一个生成器(generator)

如下:

	def getNum(n):
	    i = 0
	    while i <= n:
	        yield i     #将函数变成一个generator
	        i+=1
	
	print(getNum(5))

结果:

	<generator object getNum at 0x0000000002528C00>```


> 使用生成器 通过 next()方法

a = getNum(5)  #把生成器赋值给一个变量a
print(next(a))  #输出yield返回的值

> 并且会抛异常,需要手动抛异常StopIteration

* 如果使用for循环不需要抛出异常


for i in a:
    print(i)


#### 3.yield作用

> 使用生成器可以达到延迟操作的效果,所谓延迟操作就是指在需要的时候
> 产生结果而不是立即产生就结果,节省资源消耗,在不使用的时候几乎是不占内存的



#### 4.迭代器


> 首先了解下什么是迭代对象

* 迭代对象

> 可以用for in 遍历得对象度可以叫做是可迭代对象:Iterable
    如:list string dict  


```python
	list01 = [1,2,3,4,5] #是一个可迭代对象
	for i in list01:
	    print(i)
	print(next(list01))   #list01不是迭代器所以无法调用  next

报错:

list不是一个迭代器,则无法使用next函数

	'list' object is not an iterator
  • 迭代器

可以被next()函数调用的并不断返回下一个值得对象叫做迭代器:iterator

通过iter()将一个可迭代对象变成迭代器

	a = iter(list01)
	print(a)
	print(next(a))

结果:

	<list_iterator object at 0x0000000002E554A8>
	1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值