(x**2 for x in range(5)) это лишь упрощенная запись функции-генератора для использования в простых случаях ( не путать с генераторами списков: [x**2 for x in range(5)]. Отличие лишь в скобках, а смысл совершенно разный, ведь генераторные выражения выдают значения на ходу, генератор списков заранее создает весь список, и уже потом выдает его значения как iterable).