Избегайте или задерживайте оценку вещей, которые нельзя использовать
Как можно достичь ленивой оценки в 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 способ рефакторинга примеров, как выше, чтобы лениво оценивать.