【发布时间】:2021-12-25 01:58:50
【问题描述】:
假设我有以下字典d={'a': heavy_expression1, 'b': heavy_expression2}。
如何包装表达式,以便在访问它们后对其进行评估,之后不再执行评估?
d['a'] # only here heavy_expression1 is executed
d['a'] # no execution here, already calculated
我需要使用lambda 还是生成器?
【问题讨论】:
-
您可以将
global变量内的heavy_expression1传递为executed = True并将其用作if condition -
为什么不使用带有cached properties 的类而不是裸字典?
-
快速想法:将字典的所有相关值初始化为
None,然后通过处理函数查询字典,该处理函数将None替换为运行时遇到的评估表达式。表达式将存在于处理函数中,而不是字典。 -
这两个heavy_expression真的不同,还是它们涉及到关键,只是不同?
-
为什么要在这里使用字典?
标签: python python-3.x lazy-evaluation