Apr-19-2024, 07:58 PM
# removed the * in front of iterables print("Definition of generator-function") def join(iterables, joiner): print("First step of generator") # spliting iterable in first iterable and the rest first, *rest = iterables # yield each element from first yield from first # here the generator pauses until # next iteration print("Second step of generator") for iterable in rest: # yield joiner print("yield") yield joiner # yield each element from iterable from rest print("yield from") yield from iterable # example my_iterables = ( range(3), range(4), range(2), ) print("Calling generator-function") gen = join(my_iterables, "-") # generator print("Generator:", gen) print("Code inside the generator is not executed yet") print("Iterating over generator with list(gen)") print() result = list(gen) # <- this consumes the generator # Now the generator is empy print("Trying to consume gen again: ", list(gen)) print("But the generator is exhausted.") print("Example with a for-loop") print() for element in join(my_iterables, "-"): print(element, type(element))
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
All humans together. We don't need politicians!