Why does conversion of a range object to generator result in a `range_iterator` object?

Viewed 121

This is not a duplicate of Why a range_iterator when a range is reversed? You'll know why if you take a look at it.

My question pertains to the distinction between a generator resulting from range versus any other iterator, and why that distinction is made:

In [500]: iter(range(5))
Out[500]: <range_iterator at 0x10987f810>

Whereas...

In [506]: (i for i in range(4))
Out[506]: <generator object <genexpr> at 0x10a025fc0>

So, why is this distinction made and what merit does it have?

1 Answers
Related