Iterables
任何可以用 for in 來(lái)迭代讀取的都是迭代容器汗菜,例如lists,strings,files.這些迭代器非常的便利,因?yàn)槟憧梢韵肴《嗌俦闳《嗌俸坑龋悄愕么鎯?chǔ)所有的值,其中很多值都完全沒(méi)有必要每次都保持在內(nèi)存中。Generators
Generators(生成器)也是可迭代的,但是你每次只能迭代它們一次尖殃,因?yàn)椴皇撬械牡鞫急灰恢贝鎯?chǔ)在內(nèi)存中的,他們臨時(shí)產(chǎn)生這些值划煮。
生成器幾乎和迭代器是相同的送丰,除了符號(hào)[]變?yōu)?)。但是你無(wú)法用兩次弛秋,因?yàn)樗麄冎簧梢淮危核麄兩?然后丟棄器躏,繼續(xù)統(tǒng)計(jì)1,接著是4蟹略,一個(gè)接著一個(gè)登失。
Yield的用法有點(diǎn)像return,除了它返回的是一個(gè)生成器,
當(dāng)你調(diào)用這個(gè)函數(shù)的時(shí)候挖炬,你寫在這個(gè)函數(shù)中的代碼并沒(méi)有真正的運(yùn)行揽浙。這個(gè)函數(shù)僅僅只是返回一個(gè)生成器對(duì)象。