python - 如何将惰性变量传递给函数参数而不对其求值,除非返回

标签 python language-agnostic lazy-evaluation

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

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

谢谢。

最佳答案

您可以使用特殊对象来推迟计算,直到第一次使用该对象为止。它看起来是Lazy Proxy会做你想做的事。

关于python - 如何将惰性变量传递给函数参数而不对其求值,除非返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747751/

相关文章:

python - 强制python子类init使用子类变量,而不是父类

python Nose 和扭曲

haskell - Haskell 中的所有内容都存储在 thunk 中吗,甚至是简单的值?

python - 在 PNG 中将图像保存为 RGBA8

python - 仅允许 pandas 数据框中的两列之间进行一对一映射

algorithm - 连词的拼写建议

algorithm - 设计一个堆栈使得 getMinimum( ) 应该是 O(1)

algorithm - 从字符串中查找子串

python - python中的方法链延迟执行

Haskell:使用 deepseq 进行更严格的折叠