Evitar o retrasar la evaluación de cosas que no se pueden usar
¿Cómo se puede lograr una evaluación perezosa en Python? Un par de ejemplos simples:
>>> def foo(x):
... print(x)
... return x
...
>>> random.choice((foo('spam'), foo('eggs')))
spam
eggs
'eggs'
Anterior, realmente no necesitábamos evaluar todos los elementos de esta tupla para elegir uno. Y a continuación, el valor predeterminadofoo()
realmente no necesitaba ser calculado a menos que la clave de búsqueda faltara realmente en el dict:
>>> d = {1: "one"}
>>> d.get(2, foo("default"))
default
'default'
>>> d.get(1, foo("default"))
default
'one'
Estoy buscando una forma pitónica de refactorizar ejemplos como el anterior para evaluar perezosamente.