Generator is a function that returns values one at a time using yield, saving memory.
Generator function:
1def count_up_to(n):2 count = 13 while count <= n:4 yield count # Returns value, pauses5 count += 167# Usage8for num in count_up_to(5):9 print(num) # 1, 2, 3, 4, 5
Generator expression:
1# Like list comprehension, but with ()2squares = (x**2 for x in range(10))34for s in squares:5 print(s)
Advantages:
1# Infinite sequence2def fibonacci():3 a, b = 0, 14 while True:5 yield a6 a, b = b, a + b78fib = fibonacci()9print(next(fib)) # 010print(next(fib)) # 111print(next(fib)) # 1