在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ 直接用next(nums())調(diào)用生成器,只能返回第一個(gè)值,而next(it)可

直接用next(nums())調(diào)用生成器,只能返回第一個(gè)值,而next(it)可以?求解答~ 謝謝各位!

def nums():
    n = 0
    while True:
        n += 1
        yield n

>>> it = nums()
>>> next(it)
    1
>>> next(it)
    2
>>> next(it)
    3    
    
>>> next(nums())
    1
>>> next(nums())
    1 
>>> next(nums())
    1 
回答
編輯回答
小曖昧

每次調(diào)用nums()都會(huì)返回一個(gè)新的generator對(duì)象,next調(diào)用完之后就被destory了。而it則始終是同一個(gè)

2017年4月24日 05:10
編輯回答
舊螢火

給你舉個(gè)栗子
假設(shè)num()是一個(gè)無(wú)窮的標(biāo)簽庫(kù),
it = nums() 相當(dāng)于從便簽庫(kù)里面拿一個(gè)標(biāo)簽貼到it身上
next(it) 操作的一直都是it,只是因?yàn)閕t被貼了nums()的標(biāo)簽,所以有它的性質(zhì),next的時(shí)候會(huì)返回下一個(gè)值。
next(nums()) 操作的是標(biāo)簽庫(kù),相當(dāng)于你每次都拿一個(gè)新的標(biāo)簽出來(lái),因此每次返回的就是第一個(gè)值

2017年7月15日 16:04
編輯回答
真難過(guò)

跟樓上說(shuō)的一樣,你每次調(diào)用nums()都是重新運(yùn)行了一遍函數(shù),會(huì)從1開始yield出來(lái)。

2017年11月8日 03:35