7旁趟、什么是 iterable/iterator/generator
Iterable 可迭代對(duì)象
列表、元祖限煞、字符串抹恳、字典、文件署驻。
指1.實(shí)現(xiàn)了 iter 方法的對(duì)象, iter() 返回一個(gè) Iterator, Iterator 實(shí)現(xiàn)了next() (在 Python 3 更名為 next) 方法.
2.如果對(duì)象實(shí)現(xiàn)了 getitem 方法也是可以的. 如果能成功調(diào)用 iter(這個(gè)對(duì)象) 并返回一個(gè)迭代器, 那么 '這個(gè)對(duì)象' 就是Iterable.
迭代器(Iterator)
任意對(duì)象奋献,只要定義了next(Python2) 或者next方法健霹,它就是一個(gè)迭代器。iter返回迭代器自身瓶蚂。迭代器就是實(shí)現(xiàn)了工廠模式的對(duì)象
generator糖埋,生成器也是一種迭代器,但是你只能對(duì)其迭代一次扬跋。這是因?yàn)樗鼈儾]有把所有的值存在內(nèi)存中阶捆,而是在運(yùn)行時(shí)生成值。你通過遍歷來使用它們钦听,要么用一個(gè)“for”循環(huán)洒试,要么將它們傳遞給任意可以進(jìn)行迭代的函數(shù)和結(jié)構(gòu)。
參考:https://foofish.net/iterators-vs-generators.html