The iter function wraps objects like lists or tuples in order to use them as iterators, i.e. one is able to use next, for example. For instance,
next(iter([1, 2, 3]))
returns 1.
What happens internally if the object we pass to iter is already an iterator? Does it simply return the original object, i.e. no-op? Or does it produce a new iterator wrapping the original one? And by wrapping I don't mean copying the original iterator, of course.