Python 变量在为其因变量指定另一个值后不改变
将以下代码输入到Python3.5shell中会给我一个我没有预料到的答案,非常基本,我知道,但请有人帮我解释一下Python 变量在为其因变量指定另一个值后不改变,python,variables,Python,Variables,将以下代码输入到Python3.5shell中会给我一个我没有预料到的答案,非常基本,我知道,但请有人帮我解释一下 >>> 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*y不是一个在您更改x
>>> 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*y
不是一个在您更改x
或y
时自动更新a
的方程式。当语句运行时,它将a
设置为x*y
一次。之后对x
或y
的任何更改对a
没有影响
当您更改
x
或y
时,您需要手动更新a
,或者,如果情况允许,使用本地函数执行@Silvio的答案所显示的操作。创建本地快捷方式来帮助清理代码非常方便 a=x*y
不是一个在您更改x
或y
时自动更新a
的方程式。当语句运行时,它将a
设置为x*y
一次。之后对x
或y
的任何更改对a
没有影响
当您更改
x
或y
时,您需要手动更新a
,或者,如果情况允许,使用本地函数执行@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
时,该值会随之设置
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))
变量将不会更新。您可能希望以这种方式创建函数
def a(x,y):
return x*y
然后可以创建元组
(x, y, a(x,y))
“a”变量只有在您有意更新时才会更新。
为了在更改“x”后更新“a”,需要再次执行行a=x*y
如果你复制并粘贴你的代码到这里,它会给你一个很好的视觉效果 只有在您有意更新“a”变量时,才会对其进行更新。
为了在更改“x”后更新“a”,需要再次执行行a=x*y
如果你复制并粘贴你的代码到这里,它会给你一个很好的视觉效果 或的可能副本。或者,这能回答你的问题吗?或的可能副本。或者,这能回答你的问题吗?那么OP要求的解释在哪里?那么OP要求的解释在哪里?