Python iterator when underlying object changes

前端 未结 3 1367
-上瘾入骨i
-上瘾入骨i 2021-01-20 11:37

I would like to know what\'s the general behaviour of an iterator if the underlaying object changes during the iteration.

Using a simple mutable list, it seems obvi

3条回答
  •  悲&欢浪女
    2021-01-20 11:53

    There's a comment on that particular issue in PEP 234 (Iterators):

    Once a particular iterator object has raised StopIteration, will it also raise StopIteration on all subsequent next() calls?

    Some say that it would be useful to require this, others say that it is useful to leave this open to individual iterators. Note that this may require an additional state bit for some iterator implementations (e.g. function-wrapping iterators).

    Resolution: once StopIteration is raised, calling it.next() continues to raise StopIteration.

    Note: this was in fact not implemented in Python 2.2; there are many cases where an iterator's next() method can raise StopIteration on one call but not on the next. This has been remedied in Python 2.3.

提交回复
热议问题