【问题标题】:What is the actual logic of saving a variable in memory of PythonPython内存中保存变量的实际逻辑是什么
【发布时间】:2015-02-17 04:26:13
【问题描述】:

在这个例子中;

>>> 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 是不同的,所以我们知道 bs 是不同的,但是如果 d 仍然是 2 这意味着旧的 b 仍然在内存中的某个地方。由于新的b 等于4,我们无法访问旧的b。我们不能说旧的b 消失了,因为d 仍然是2。那么老 b 发生了什么?我们怎样才能接触到旧的?它仍然存在,因为d 等于2

【问题讨论】:

  • 为什么d等于2意味着旧的b仍然存在?
  • 因为如果b等于4,d必须等于8。但是d在重新定义b后仍然等于2。所以对这个变量的操作依赖于旧变量
  • d = c*b 不是惰性计算,它是立即计算并由d 引用,之后更改bc 不会影响其值。
  • “旧”b 在分配d 期间是相关的,之后d 将仅“记住”它的分配值——而不是它的计算方式。
  • 您误解了事情的运作方式。设置d = c*b 会设置d once 的值,此时。如果您稍后更改 bd 将不会“更新”。

标签: python variables memory python-3.4


【解决方案1】:

我认为您假设您为 d d=c*b 编写的方程式是存储在内存中的,并且如果您更新 b,它将更新 d 中的值。事实上,等式在d=c*b 行执行后立即执行,返回的 就是d 存储在内存中的值。这就是为什么当你更新 b 时它没有更新。

【讨论】:

    猜你喜欢
    • 2013-03-12
    • 1970-01-01
    • 2014-10-30
    • 2023-04-06
    • 2011-04-01
    • 1970-01-01
    • 2019-11-18
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多