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