Scope of variable inside list comprehensions?
Rainer Grimm
r.grimm at science-computing.de
Tue Dec 6 01:42:35 EST 2011
Hello,
> try:
> songs = [Song(id) for id in song_ids]
> except Song.DoesNotExist:
> print "unknown song id (%d)" % id
that's is a bad programming style. So it will be forbidden with python 3. The reason is that list comprehension is a construct from the functional world. It's only syntactic sugar for the functions map and filter. So functions have to be pure functions. To say it in other words, they have to be side-effect free. But the python construct from above pollutes the namespace with name id.
Greetings from Rottenburg,
Rainer
More information about the Python-list
mailing list