[Python-Dev] accumulator display syntax
Michael Hudson
mwh at python.net
Wed Oct 22 07:03:18 EDT 2003
Greg Ewing <greg at cosc.canterbury.ac.nz> writes:
> Michael Hudson <mwh at python.net>:
>
>> In particular what happens if the iteration variable is a local in the
>> frame anyway? I presume that would inhibit the renaming
>
> Why?
Well, because then you have the same name for two different bindings.
>> but then code like
>>
>> def f(x):
>> r = [x+1 for x in range(x)]
>> return r, x
>>
>> becomes even more incomprehensible (and changes in behaviour).
>
> Anyone who writes code like that *deserves* to have the
> behaviour changed on them!
This was not my impression of the Python way. I know I'd be pretty
pissed if this broke my app.
I have no objection to breaking the above code, just to breaking it
silently! Having code *silently change in behaviour* (not die with an
expection, post a warning at compile time or fail to compile at all)
is about an evil a change as it's possible to contemplate, IMO.
> If this is really a worry, an alternative would be to
> simply forbid using a name for the loop variable that's
> used for anything else outside the loop. That could
> break existing code too, but at least it would break
> it in a very obvious way by making it fail to compile.
This would be infinitely preferable!
Cheers,
mwh
--
I like silliness in a MP skit, but not in my APIs. :-)
-- Guido van Rossum, python-dev
More information about the Python-Dev
mailing list