Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 变量在为其因变量指定另一个值后不改变_Python_Variables - Fatal编程技术网

Python 变量在为其因变量指定另一个值后不改变

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

将以下代码输入到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
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要求的解释在哪里?