关于代码架构的问题。假设有很多elif's。在“top”条件下,表达式的结果不会在分支内使用。在较低的条件中,有一个条件if是在分支内部使用来自 'a 的表达式的结果。
问题:
如何编写代码以使该结果不会计算两次(在检查和分支内部时)并且不会再次计算(例如,如果第一个条件通过)?
示例代码:
def task(val):
if val % 2:
print("cond1") # результат выражения не используется
elif val % 3:
print("cond2")
elif val % 5:
print(val % 5) # Тут результат из if'а используется внутри ветки
# и высчитывается второй раз. Этого хотелось бы избежать
else:
print("else")
task(6)
我知道在 Python 3.8 中有一个海象运算符可以解决我的问题,但是系统使用 Python 3.7,需要一个解决方案。
使用标准functools.lru_cache()来缓存函数调用的结果:
感谢@Xander 的缓存提示。实现了一个存储类:
它看起来很拐杖,我会很高兴最好的解决方案。