Ваш код сокращен для:
test = sum((5 for i in range(5)))
Удаление лишних скобок является синтаксическим сахаром: оно не влияет на ваш алгоритм.
Компонент (5 for i in range(5))
является выражение генератора , которое на каждой итерации выдает значение 5. Общее количество выражений генератора составляет 5 итераций, как определено range(5)
.Следовательно, выражение генератора дает 5 ровно 5 раз.
sum
, как показывают документы, принимает любые повторяемые , даже те , а не полностью хранится в памяти.Генераторы и, по выражению генератора расширений, эффективны для памяти.Следовательно, ваша логика будет суммировать 5 ровно 5 раз, что равно 25.
Соглашение, когда вы не используете переменную в замкнутом цикле, состоит в том, чтобы обозначать эту переменную подчеркиванием (_
), поэтому обычновы увидите код, написанный как:
test = sum(5 for _ in range(5))