PEP 3107 and stronger typing (note: probably a newbie question)
Steven D'Aprano
steve at REMOVE.THIS.cybersource.com.au
Sun Jul 8 18:17:04 EDT 2007
On Sun, 08 Jul 2007 08:49:26 -0400, Steve Holden wrote:
> Paul Rubin wrote:
>> Steve Holden <steve at holdenweb.com> writes:
>>>> Python even leaks the index variable of list comprehensions (I've
>>>> mostly stopped using them because of this), though that's a
>>>> recognized wart and is due to be fixed.
>>>>
>>> Wow, you really take non-pollution of the namespace seriously. I agree
>>> it's a wart, but it's one I have happily worked around since day one.
>>
>> Well, the obvious workaround is just say "list(<some genexp>)"
>> instead of [<the same genexp>] so that's what I do.
>
> I think I'll start calling you Captain Sensible. But you are right, it
> does avoid that extra little potential for errors.
I'd be thinking it should be Captain Paranoid. Why is list comp leakage
a worse problem than, well, having local variables in the first place?
def foo(x):
y = something_or_other(x+1)
z = do_something_else(y) + another_thing(y)
# Oh noes!!! y still exists!!1!11!! What to do????
return ("foo", y) # OMG I meant to say z!!!
If your function has got so many lines of code, and so many variables that
this becomes a source of errors, your function should be refactored into
smaller functions.
As far as I can see, the only difference is that the list comp variable
isn't explicitly created with a statement of the form "name = value". Why
is that a problem?
--
Steven.
More information about the Python-list
mailing list