Ленивые вычисления (lazy evaluation)
Коротко: При ленивых вычислениях выражение вычисляется только тогда, когда его результат действительно нужен, — и тогда не более одного раза. Противоположность — немедленные (энергичные, eager) вычисления.
Подробнее: Это позволяет описывать бесконечные последовательности и избегать дорогих вычислений, которые никогда не понадобятся. Haskell ленив сплошь; в других языках есть генераторы, потоки, lazy-переменные и операторы короткого замыкания.
Подробности
def numbers(): #См. также: итератор, чистая функция, мемоизация, функция высшего порядка