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