在Python 3.5 shell中输入以下代码给了我一个我没想到的答案,非常基本我知道但是有人会帮我解释一下。
.multiselect--active
这些都在单独的行上,每行前面都有>>>
我预计6,但"新" x尚未使用。
答案 0 :(得分:2)
a = x*y
不是每当您更改a
或x
时自动更新y
的等式。运行该语句时,它会将a
设置为x*y
一次。之后对x
或y
的任何更改都不会对a
产生任何影响。
当您更改a
或x
时,您需要手动更新y
,或者,如果情况允许,请使用本地功能执行@ Silvio的答案显示的内容。创建本地快捷方式以帮助清理代码非常方便。
答案 1 :(得分:2)
'a'变量只有在您故意更新时才会更新。 为了在更改'x'后更新'a',您需要再次执行a = x * y行。
如果您将代码复制并粘贴到此处http://www.pythontutor.com/visualize.html#mode=edit,它会让您很好地了解正在发生的事情!
答案 2 :(得分:1)
当您指定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
时都会计算表达式。
答案 3 :(得分:0)
a
变量无法更新。您可能希望以这种方式创建函数
def a(x,y):
return x*y
然后你可以创建元组
(x, y, a(x,y))