Is there an unbounded version of range (or xrange for Python 2), or is it necessary to define it manually? For example
squares = (x*x for x in range(n))
can only give me a generator for the squares up to (n-1)**2, and I can't see any obvious way to call range(infinity) so that it just keeps on truckin'.