[Python-Dev] code blocks using 'for' loops and generators
Brian Sabbey
sabbey at u.washington.edu
Sun Mar 13 20:23:27 CET 2005
On Sun, 13 Mar 2005, Greg Ewing wrote:
> Brian Sabbey wrote:
>> I prefer re-using the 'for' loop for this purpose because it allows the
>> problem to be solved in a general way by re-using a structure with which
>> most users are already familiar, and uses generators, which are easier to
>> use in this case than defining a class with __exit__, __enter__, etc.
>
> But this is an abuse of both the for-loop and the generator.
> It's using a for-loop for something that does not loop and
> is never intended to loop, and it's using yield to do
> something other than producing a value for consumption.
>
> I'd rather see a new mechanism altogether for this very
> different use case.
The problem with creating a new mechanism is that sometimes you will want
to loop. For example, reading a bunch of items from a shared resource,
modifying them, and sending them back. A new, non-looping mechanism will
not be adequate for this because it cannot loop, and a 'for' loop will not
be adequate for the same reason it is not adequate now: it can't
automatically unlock the resource at the end of the loop.
I was looking for a single mechanism to handle all of these cases, but I
can see why you and most people would not be so keen on the idea of
abusing (I prefer "expanding the uses of") 'for' loops this way.
-Brian
More information about the Python-Dev
mailing list