Python的生成器和迭代器有什麼區別?

老男孩IT教育機構發表於2021-06-18

  當我們學習Python的時候,會遇到很多專業的術語及工具,而對於這些很多人並不是很瞭解,比如說生成器和迭代器,Python的生成器和迭代器有什麼區別?這是很多人都比較疑惑的問題,我們來看看吧。

  迭代器是一個更抽象的概念,任何物件,如果它的類有NEXTiter方法返回自己本身,對於string、list、dict、tuple 等這類容器物件,使用for迴圈遍歷是很方便的。在後臺For語言對容器物件條用iter()函式,iter()是Python的內建函式。iter()會返回一個定義了next()方法迭代器物件,在容器中逐個訪問容器的元素,next()也是Python的內建函式,next()會丟擲StopIteration異常。

  生成器是創新迭代器的簡單而強大的工具,它們寫起來就好像正則函式,只是在需要返回資料的時候使用yield 語句。

  迭代器協議,物件需要提供next()方法,它要麼返回迭代中的下一項,要麼就引起一個StopIteration異常,終止迭代。

  可迭代物件,實現了迭代器協議物件。list、tuple、dict都是Iterable可迭代的物件,但不是Iterator迭代器物件。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2777329/,如需轉載,請註明出處,否則將追究法律責任。

相關文章