在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)
这些代码都在单独的行中,每个行前都有>>>。
我以为是6个,但 "新 "x没有被使用。
'a'变量只有在你特意更新的情况下才会更新。为了在改变'x'之后更新'a',你需要再次执行a = x*y这一行。
如果你把你的代码复制并粘贴到这里 http:/www.pythontutor.comvisualize.html#mode=edit 它会给你一个很好的视觉效果!
a = x*y
是不是一个自动更新的方程 a
每当你改变 x
或 y
. 它规定 a
到 x*y
曾经 语句运行时。任何对 x
或 y
后续 a
.
你需要手动更新 a
当你改变 x
或 y
,或者,如果情况允许,使用本地函数来做@Silvio的答案。创建本地快捷方式来帮助清理代码是很方便的。
当你将 a
该值在当时就被设定。
a = x * y
该 当前 价值的 x
和 y
被使用。的表达方式。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
被调用。
a
变量不会被更新。你可能想这样创建一个函数
def a(x,y):
return x*y
然后你可以创建元组
(x, y, a(x,y))