Код выводит S P A M, а не SPAM, потому что используется оператор распаковки *, который распаковывает элементы генератора и передает их как отдельные аргументы в функцию print().
- Генераторное выражение: (x.upper() for x in 'spam') создает генератор, который преобразует каждую букву строки 'spam' в верхний регистр, выдавая S, P, A, M по одному.
- Оператор * (распаковка) передает все отдельные элементы генератора как отдельные аргументы в функцию print(). Это эквивалентно вызову print('S', 'P', 'A', 'M').
- По умолчанию print() разделяет свои аргументы пробелами при выводе. Поэтому получаем итоговый результат: S P A M.
Post #3676
1.31K