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