变量不变(Python 3.5)

时间:2017-09-23 00:56:11

标签: python python-3.x

在Python 3.5 shell中输入以下代码给了我一个我没想到的答案,非常基本我知道但是有人会帮我解释一下。

.multiselect--active

这些都在单独的行上,每行前面都有>>>

我预计6,但"新" x尚未使用。

4 个答案:

答案 0 :(得分:2)

a = x*y不是每当您更改ax时自动更新y的等式。运行该语句时,它会将a设置为x*y 一次。之后对xy的任何更改都不会对a产生任何影响。

当您更改ax时,您需要手动更新y,或者,如果情况允许,请使用本地功能执行@ Silvio的答案显示的内容。创建本地快捷方式以帮助清理代码非常方便。

答案 1 :(得分:2)

'a'变量只有在您故意更新时才会更新。 为了在更改'x'后更新'a',您需要再次执行a = x * y行。

如果您将代码复制并粘贴到此处http://www.pythontutor.com/visualize.html#mode=edit,它会让您很好地了解正在发生的事情!

答案 2 :(得分: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时都会计算表达式。

答案 3 :(得分:0)

a变量无法更新。您可能希望以这种方式创建函数

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

然后你可以创建元组

(x, y, a(x,y))