Python學習筆記|Python之yield理解

Tester_hope發表於2018-12-21

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

相關文章