Any object with an __iter__() method is considered an iterable.
Additionally, any sequence (objects that have an __getitem__() method) could return an iterator. An iterator is an object with a __next__() method that returns the next object in the sequence and throws a StopIteration exception.