At 11:48 AM 9/15/03 +0100, Armin Rigo wrote: >Hello Samuele, > >On Sat, Sep 13, 2003 at 04:18:51PM +0200, Samuele Pedroni wrote: > > OTOH conflating 'with' and 'for' just for generators seems a rather ad-hoc > > breaking of > > orthoganility of the two, you could not write anymore code like this: > > > > g = gen() > > for v in g: > > ... do something up to a point ... > > ... > > for v in g: > > ... > >I had thought about this. This occurs when you 'break' out of the first loop. >I would say that NOT calling the __exit__() method in this specific case seems >quite intuitive, the 'break' meaning 'just exit from the loop now without any >further processing, skipping the 'else' part if present'. Hmmm... You realize this is also going to break the similarity between: i = iter(something) while 1: try: j=i.next() except StopIteration: break and for j in iter(something): pass The former is already complex enough as a mental model. I think it gets altogether too complex if one also has to consider the enter/leave issue. This strikes me as an area like try/except vs. try/finally: it really should be a separate block, just for the sake of explicitness. As much as it would be cool to have the automatic release, I think I'd rather use: with i = iter(something): for j in i: ... And make the resource management very visible.
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