Better. Or perhaps generator expression? To maintain the link with generator functions, since the underlying mechanism *will* be mostly the same. Yes, I like that even better.
BTW, while Alex has shown that a generator function with no free variables runs quite fast, a generator expression that uses variables from the surrounding scope will have to use the nested scopes machinery to access those, unlike a list comprehension; not only does this run slower, but it also slows down all other uses of that variable in the surrounding scope (because it becomes a "cell" throughout the scope).
Someone could time how well
y = 1 sum([x*y for x in R])
fares compared to
y = 1 def gen(): for x in R: yield y*y sum(gen())
for R in (range(N) for N in (100, 1000, 10000)).
--Guido van Rossum (home page: http://www.python.org/%7Eguido/)