如何在python中完成這種事情?這是稱爲懶惰評估還是我把名字與其他東西混合?例如:避免或延遲評估不可用的東西
>>> 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 2012-03-21 10:50:10
這裏明顯的答案只是在做出選擇後應用''foo()''函數。此外,當您使用迭代器時,請記住使用列表中的生成器進行惰性評估。 – 2012-03-21 10:52:51