Python学习笔记|Python之yield理解

在了解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

	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

猜你喜欢

转载自blog.csdn.net/Hh20161314/article/details/85156583