为何Python中类公式变量无法自动更新?如何重新计算其值?
为什么x变化时y不自动更新?怎么实现预期输出?
问题原因
在Python里,变量赋值是一次性计算并存储结果,并非动态绑定的关联关系。当你执行y = x + 2时,程序会立刻取当时x的数值(也就是1),计算出1+2=3,然后把这个结果存在y变量里。之后不管x怎么变化,y里存储的始终是最初的3,自然不会跟着更新。
解决方法
方法1:每次循环重新计算y
把y = x + 2放到循环内部,让每次循环都基于最新的x值计算y:
x = 1 for _ in range(5): x = x * 2 y = x + 2 # 每次循环都重新计算y的当前值 print(y)
或者更简洁,直接在打印时计算结果:
x = 1 for _ in range(5): x = x * 2 print(x + 2)
方法2:用函数动态获取y的值
如果需要多次用到y的当前值,可以定义一个函数,每次调用时都会基于最新的x计算:
x = 1 def get_y(): return x + 2 # 每次调用都会取当前x的值计算 for _ in range(5): x = x * 2 print(get_y())
执行上面任意一种代码,都能得到预期输出:
4 6 10 18 34
内容的提问来源于stack exchange,提问作者Karl Knechtel
相关产品推荐
相关产品推荐

