在python的生成器中,連續使用兩個next函式,發現效果不一樣?

時間 2021-06-01 14:06:41

1樓:無關風月

我執行你這段程式的結果如下:

looking for python

None

Traceback (most recent call last):

File "yield-example2.py", line 11, in

print(next(g))

File "yield-example2.py", line 6, in grep

if pattern in line:

TypeError: argument of type 'NoneType' is not iterable

解釋:執行 17 行的時候,grep 函式開始執行,列印『looking for python』

接著執行到 12 行,yield 返回 None,程式掛起,17 行的 print 列印返回的 None

執行 18 行,程式從掛起的地方繼續,next 相當於傳進去 None,所以 line 為 None,繼續執行第 13 行,丟擲exception 『TypeError: argument of type 'NoneType' is not iterable』

python生成器到底有什麼優點?

公子半島 一般用情況列表生成器可以直接生成列表,如果列表資料過多,這樣會占用大量記憶體。通過生成器Generator可以生成列表的記憶體位址,從而達到想用什麼資料在取出來的效果。列表生成器 print x x for x in range 10 0,1,4,9,16,25,36,49,64,81 直...

如何最簡單 通俗地理解Python的生成器?

Python開發大佬 要了解yield的作用,就要了解什麼是生成器。要了解生成器,首先要了解迭代器。I t e r a b l e 迭代器 在建立列表時,可以逐個讀取其專案。逐項讀取的專案稱為迭代 mylist是可迭代的物件,這就是迭代。使用 for in 的所有物件都是可迭代的物件,如 list ...

用漫畫生成器生成的個人故事漫畫這種方式是不是很low

禾爻 不low。對那些想要畫漫畫卻一竅不通的人來說簡直是雪中送炭。但這種生成器也是有缺陷 人物僵硬,素材稀少 所以最好是自己學 畫吧。 記憶球 謝個邀?個人認為沒有low的創作方式,只有low的作者和作品。漫畫最重要的是內容的表達。像這類降低門檻的工具可預見的只會越來越多,各行各業都是如此 比如修圖...