gpt4 book ai didi

python - __iter__ 返回迭代器对象本身的目的是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:25 25 4
gpt4 key购买 nike

我不明白为什么 __iter__ 特殊方法只返回调用它的对象(如果它是在迭代器上调用的)。它本质上只是一个标志,表明该对象是一个迭代器吗?

编辑:实际上,我发现“这是允许容器和迭代器与 forin 语句一起使用所必需的。” https://docs.python.org/3/library/stdtypes.html#iterator.iter

好吧,我是这样理解的:在编写 for 循环时,您可以指定要循环的可迭代对象或迭代器。但是 Python 最终需要一个用于循环的迭代器,因此它会根据给定的任何内容调用 __iter__ 方法。如果它被赋予一个迭代器,__iter__ 方法将产生一个迭代器,如果它被赋予一个迭代器,__iter__ 方法同样会产生一个迭代器(给定的原始对象).

最佳答案

当您使用 for x in something 循环某些内容时,循环实际上首先调用了 iter(something),因此它有一些可以使用的东西。一般来说,for 循环大约等同于这样的东西:

something_iterator = iter(something)
while True:
try:
x = next(something_iterator)

# loop body

except StopIteration:
break

因此,正如您自己已经弄清楚的那样,为了能够遍历迭代器,即当 something 已经是一个迭代器时,迭代器应该在调用 iter() 时始终返回自己 在他们身上。所以这基本上确保了迭代器也是可迭代的。

关于python - __iter__ 返回迭代器对象本身的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com