Избегайте или задерживайте оценку вещей, которые нельзя использовать

Как можно достичь ленивой оценки в Python? Пара простых примеров:

>>> def foo(x):
...     print(x)
...     return x
... 
>>> random.choice((foo('spam'), foo('eggs')))
spam
eggs
'eggs'

Выше нам не нужно было оценивать все элементы этого кортежа, чтобы выбрать один. И ниже, по умолчаниюfoo() на самом деле не нужно вычислять, если ключ поиска на самом деле отсутствует в dict:

>>> d = {1: "one"}
>>> d.get(2, foo("default"))
default
'default'
>>> d.get(1, foo("default"))
default
'one'

Я ищу Pythonic способ рефакторинга примеров, как выше, чтобы лениво оценивать.

Ответы на вопрос(4)

Ваш ответ на вопрос