#generator.py def sqrs(nums_list): for num in nums_list: yield num**2 # quits at first yield? NO #print("in loop") # yes, all iterations happen print("Does happen") sqr_nums = sqrs([1,2,3,4,5]) #sqr_nums is the generator # values of a generator not stored in memory print(next(sqr_nums)) #first one print(next(sqr_nums)) #second for i in sqr_nums: #the rest print(i) #print(next(sqr_nums)) #error. no more. StopIteration error more_nums = (x**2 for x in [10,20,30,40,50]) #parens make it a generator, not a list comprehension print(more_nums) #"generator object" #print(list(more_nums)) #convert to list, but then no more. print(next(more_nums)) for i in more_nums: #the rest print(i)