Python中的next()方法



我想知道next((方法在python中是如何工作的?

lst=[1,2,3,4]
it=iter(lst)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
Output
1
2
3
4

我的问题:

  1. 当我们在迭代器上调用next((方法时,next(((方法是否返回迭代器返回的值。如果是,迭代器如何从iterable中获取值
  2. 当我们在迭代器上调用next((方法时,next(
  3. next((方法跟踪值(比如在哪个调用中返回哪个值(还是迭代器跟踪值,如果迭代器追踪值,迭代器是如何做到的?我的意思是迭代器如何跟踪值

请澄清我的困惑。

所有可迭代项都定义了一个名为__iter__的函数。在这里,我做了一个名为Foo的类,它一直从1开始计数。

class Foo:
def __init__(self):
self.count = 1
def __iter__(self):
while True:
yield self.count
self.count += 1
bar = Foo()

当我做it = iter(bar)时,它会检查bar是否有__iter__函数。

然后,当我执行next(it)时,它会调用__iter__函数并运行,直到它达到yield。然后,它返回该值并暂停。

当您再次调用next(it)时,它会返回到__iter__中的位置并运行,直到再次达到yield。如果退出__iter__函数,则会引发StopIteration错误。

最新更新