簡單介紹 yield
本篇文章會先向你介紹一個陌生的 Python 關鍵詞,他和 return
就像一對新兄弟,有相似之處,又各有不同。
相似的是:yield 和 return 都可以在一個函數里將值返回給調用方;
不同的是:return 后,函數運行就終止了,而 yield 則只是暫停運行。
關于 yield 的簡單使用,請先看如下例子
>>> def demo():
... yield 1
... yield 2
... yield 3
...
>>> gen = demo()
>>> gen
>>>
>>>
>>> for i in gen:
... print(i)
...
1
2
3
重點有如下幾個:
含有 yield 的函數,不再是普通的函數,直接調用含有 yield 的函數,返回的是一個生成器對象(generator object)
可以使用 for 循環(實際還可以使用 list 或者 next 函數)來遍歷該生成器對象,將 yield 的內容一個一個打印出來
向生成器中發送消息
函數暫停之后,如果調用者能在下一次恢復函數運行的時候,向它傳遞一些信息,那么整個程序的靈活性會大大提升。
下面通過一個簡明的演示來看看,如何往生成器中發送消息:
def jumping_range(N):
index = 0
while index < N:
# 通過send()發送的信息將賦值給jump
jump = yield index
if jump is None:
jump = 1
index += jump
if __name__ == '__main__':
itr = jumping_range(5)
print(next(itr))
print(itr.send(2))
print(next(itr))
print(itr.send(-1))
輸出。
0
2
3
2
這里解釋下為什么這么輸出。 重點是jump = yield index
這個語句。
分成兩部分:
1.yield index
是將index return
給外部調用程序。
2.jump = yield
可以接收外部程序通過send()發送的信息,并賦值給jump
審核編輯:湯梓紅
-
信息
+關注
關注
0文章
406瀏覽量
35536 -
函數
+關注
關注
3文章
4328瀏覽量
62574 -
python
+關注
關注
56文章
4793瀏覽量
84631
發布評論請先 登錄
相關推薦
評論