[JvR] > > class Outer: > > [snip snip] > > def __iter__(self): > > while not self.isAtEnd(): > > result = self.outer.currentState() > > self.outer.advanceState() > > yield result [David Abrahams] > This only works for 'self-iterable' types like files, right? No, the generator-iterator can hold state in the form of local variables. That isn't used in this example, though. [later] > Hey, wait a sec! > > It doesn't surprise me at all that the above is more compact. I don't > see any next() interface, nor any raising of StopIteration. Does it > really satisfy the iterator protocol? Heh, yeah, that's what generators do. You call a generator-function (like the __iter__() method above) and it returns a generator-iterator. The magic word is "yield". Just
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4