この種のものは、どのようにしてエレガントな形で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'
別の例はsomedefault
が本当にkey not in dict
ない限り、呼び出す必要はありませんでしたdict.get(key, somedefault())
を使用している場合があります。
はい、説明したことは、一般に遅延評価と呼ばれています。 – adelphus
明白な答えは、選択した後に '' foo() ''関数を単に適用することです。また、イテレータを使用して作業するときは、遅延テストのためにリストの上にジェネレータを使用することを忘れないでください。 –