在Python内存中保存变量的实际逻辑是什么
在这个例子上在Python内存中保存变量的实际逻辑是什么,python,variables,memory,python-3.4,Python,Variables,Memory,Python 3.4,在这个例子上 >>> b = 2 >>> c = b/2 >>> d = c*b >>> id(b) 1820966944 >>> d 2.0 >>> b = 4 >>> d 2.0 >>> id(b) 1820966976 >>> d 2.0 >>> 在我们重新定义变量b之后,d仍然是2。ID是不同的,因此我们知
>>> b = 2
>>> c = b/2
>>> d = c*b
>>> id(b)
1820966944
>>> d
2.0
>>> b = 4
>>> d
2.0
>>> id(b)
1820966976
>>> d
2.0
>>>
在我们重新定义变量
b
之后,d
仍然是2
。ID是不同的,因此我们知道两个b
s是不同的,但是,如果d
仍然是2
,这意味着旧的b
仍然在内存中的某个地方。因为新的b
等于4
,所以我们无法到达旧的b
。我们不能说旧的b
已经消失,因为d
仍然是2
。那么旧的b
发生了什么?我们怎样才能找到旧的?它仍然存在,因为d
等于2
我想你是在假设你为dd=c*b
写的等式是存储在内存中的,如果你更新b,它会更新d中的值。事实上,只要执行了d=c*b
行,就会执行方程,返回的值就是存储在内存中的d值。这就是为什么更新b时它不更新。为什么d
等于2意味着旧的b
仍然存在?因为如果b
等于4,d
必须等于8。但是重新定义b
后d
仍然等于2
。因此,对该变量的操作取决于旧的d=c*b
不是一个懒惰的计算,它是立即计算出来的,由d
引用,之后更改b
或c
不会影响其值。“旧的b
在d
赋值期间是相关的,之后d
将“记住”只是它的赋值,而不是它是如何计算的。你误解了事情是如何工作的。设置d=c*b
会在此时设置d
的值一次。d
如果你以后更改b
,它将不会“更新”。