Python中如何重新计算依赖其他变量的变量值?
Python 如何重新计算依赖其他变量的变量值?
首先要明确:Python 原生的普通变量赋值逻辑是立即求值,没有内置的「依赖追踪、自动重新计算」能力。
执行b = a + 1时,Python 会先计算等式右侧的表达式得到结果2,再把2这个值绑定到b变量名上,整个过程不会保存表达式逻辑、也不会记录b和a的依赖关系,所以后续修改a完全不会影响b已经绑定的值,也没有原生的re-evaluate方法可以直接实现需求。
下面是几种常用的实现方案:
方案1:用函数封装计算逻辑
最简单的实现方式,把需要重计算的逻辑包装为函数,每次取值时调用函数就会重新执行计算逻辑:
a = 1 # 把b定义为函数,每次调用时重新计算取值 def b(): return a + 1 print(b()) # 输出 2 a = 5 print(b()) # 输出 6
方案2:用类的 property 属性
如果是在类场景下使用,可以用property装饰器,取值时自动触发计算,使用起来和普通属性一样不用加括号:
class Demo: def __init__(self, a): self.a = a @property def b(self): return self.a + 1 demo = Demo(1) print(demo.b) # 输出 2 demo.a = 5 print(demo.b) # 输出 6
方案3:实现响应式依赖追踪(复杂场景用)
如果需要批量处理大量有依赖关系的变量、甚至自动触发更新,可以自己实现简易的依赖收集和重计算逻辑,也可以使用成熟的第三方库实现完整的响应式能力。
内容的提问来源于stack exchange,提问作者Joshua Star
相关产品推荐
相关产品推荐

