在将另一个值分配给因变量后,变量没有变化。

问题描述 投票:0回答:4

在Python 3.5 shell中输入下面的代码,得到了一个我没有想到的答案,我知道很基本,但有人能帮我解释一下吗?

>>> x = 5
>>> y = 2
>>> a = x*y
>>> x,y,a
(5, 2, 10)

>>> x = 3
>>> x,y,a
(3, 2, 10)

这些代码都在单独的行中,每个行前都有>>&gt。

我以为是6个,但 "新 "x没有被使用。

python variables
4个回答
2
投票

'a'变量只有在你特意更新的情况下才会更新。为了在改变'x'之后更新'a',你需要再次执行a = x*y这一行。

如果你把你的代码复制并粘贴到这里 http:/www.pythontutor.comvisualize.html#mode=edit 它会给你一个很好的视觉效果!


2
投票

a = x*y 是不是一个自动更新的方程 a 每当你改变 xy. 它规定 ax*y 曾经 语句运行时。任何对 xy 后续 a.

你需要手动更新 a 当你改变 xy,或者,如果情况允许,使用本地函数来做@Silvio的答案。创建本地快捷方式来帮助清理代码是很方便的。


1
投票

当你将 a该值在当时就被设定。

a = x * y

当前 价值的 xy 被使用。的表达方式。x * y 并没有存储在任何地方,所以 Python 不可能知道要更新它。如果你想要一个基于其变量值自动更新的值,你可以使用一个闭包。

x = 5
y = 2
a = lambda: x * y
print(x, y, a()) # Prints 5 2 10
x = 3
print(x, y, a()) # Prints 3 2 6

这确保了表达式每次都会被评估 a 被调用。


0
投票

a 变量不会被更新。你可能想这样创建一个函数

def a(x,y):
    return x*y

然后你可以创建元组

(x, y, a(x,y))
© www.soinside.com 2019 - 2024. All rights reserved.