迭代器和生成器區(qū)別是什么?相信很多人在初學(xué)Python的時(shí)候?qū)λ鼈兌己芎闷?,接下?lái)我們一起來(lái)看看它們的區(qū)別吧。 迭代器是一個(gè)更抽象的概念,任何對(duì)象,如果它的類(lèi)有next方法和iter方法返回自己的本身,對(duì)于string、list、dict、tuple等這類(lèi)容器對(duì)象,使用for循環(huán)會(huì)更加方便。在后臺(tái)for語(yǔ)句對(duì)容器對(duì)象調(diào)用iter()函數(shù),iter()是Python內(nèi)置函數(shù)。 iter()會(huì)返回一個(gè)定義了next()方法的迭代器對(duì)象,在容器中逐個(gè)訪問(wèn)容器內(nèi)元素,next()也是Python的內(nèi)置函數(shù),無(wú)后續(xù)元素時(shí),next()會(huì)拋出一個(gè)StopIteration異常 生成器是創(chuàng)建迭代器簡(jiǎn)單而強(qiáng)大的工具,像正規(guī)函數(shù),在需要返回?cái)?shù)據(jù)的時(shí)候使用yield語(yǔ)句,每次next()被調(diào)用時(shí),生成器會(huì)返回它脫離的位置。 迭代器和生成器區(qū)別主要在于生成器可以做迭代器的事情,生成器是一種特殊的迭代器。 |
|
來(lái)自: 老男孩IT教育 > 《Python培訓(xùn)》