An iterable object is an object that implements
__iter__, which is expected to return an iterator object.
An iterator object implements
__next__, which is expected to return the next element of the iterable object that returned it, and to raise a
StopIteration exception when no more elements are available.
You can use iterables in for loops, to construct lists with list comprehensions, or as input arguments for the list function.