这个问题针对的是python,虽然我不介意用户分享其他语言的经验。
基本上我的问题是尝试将惰性变量传递给函数。 (在我的情况下,我可能无法控制该函数,因此无法更改它以将生成器作为输入)。
示例(请注意,dict.get是一个函数的示例,但它很可能是foo)
def calc():
sleep(10**100)
return 42
def my_args():
yield 'meaning'
yield calc()
#Instead of
meaning_of_life = dict_.get('meaning', calc())
#I would rather
meaning_of_life = dict_.get(my_args)
我不认为有任何一线优雅的解决方案?可能需要复杂的猴子修补? (如果是这样,我尝试一下是不值得的。)
感谢。
答案 0 :(得分:2)
您可以使用特殊对象推迟计算,直到首次使用该对象。看起来Lazy Proxy会做你想做的事。
答案 1 :(得分:0)
meaning_of_life = dict_.get('meaning') or calc()