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
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
给你举个栗子
假设num()是一个无穷的标签库,
it = nums() 相当于从便签库里面拿一个标签贴到it身上
next(it) 操作的一直都是it,只是因为it被贴了nums()的标签,所以有它的性质,next的时候会返回下一个值。
next(nums()) 操作的是标签库,相当于你每次都拿一个新的标签出来,因此每次返回的就是第一个值
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
每次调用nums()都会返回一个新的generator对象,next调用完之后就被destory了。而it则始终是同一个