Как это можно сделать элегантно в питоне? Это называется ленивой оценкой или я смешиваю название с чем-то еще? Например:Избегайте или задерживайте оценку вещей, которые не могут быть использованы
>>> def foo(x):
... print x
... return x
...
>>> random.choice((foo('spam'), foo('eggs')))
spam
eggs
'eggs'
Но нам не нужно было оценивать все эти предметы, или мы?
Это работает, но я считаю, что это будет очень некрасиво:
>>> random.choice((lambda: foo('spam'), lambda: foo('eggs')))()
eggs
'eggs'
Другим примером может использовать dict.get(key, somedefault())
где somedefault
действительно не нужно, чтобы называться, если key not in dict
.
Да, то, что вы описали, обычно известно как ленивая оценка. – adelphus
Очевидным ответом здесь является простое использование функции '' foo() '' после выбора. Также, когда вы работаете с итераторами, не забудьте использовать генераторы над списками для ленивой оценки. –