2

这个问题是针对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)

我不认为有任何一种优雅的解决方案吗?可能需要复杂的猴子补丁?(如果是这样,我不值得尝试)。

谢谢。

4

2 回答 2

3

您可以使用特殊对象来推迟计算,直到第一次使用该对象。看起来懒惰的代理会做你想做的事。

于 2014-10-02T22:35:43.813 回答
0
meaning_of_life = dict_.get('meaning') or calc()
于 2012-05-25T02:40:22.007 回答