### Question :

Unbounded range()

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’.

##
Answer #1:

You’re describing the basic use of `itertools.count`

:

```
import itertools
squares = (x*x for x in itertools.count())
```