Consider the following three functions:
def return_iter(iterable):
return iter(iterable)
def for_loop_yield(iterable):
for item in iterable:
yield item
def yield_from_iter(iterable):
yield from iterable
All of them produce the same results when looped over:
>>> prog_langs = ['python', 'java', 'c++']
>>> for lang in return_iter(prog_langs):
... print(lang)
python
java
c++
>>> for lang in for_loop_yield(prog_langs):
... print(lang)
python
java
c++
>>> for lang in yield_from_iter(prog_langs):
... print(lang)
python
java
c++
What is the difference through?