Python 将对象设置为“无”不会更新所有引用

Python 将对象设置为“无”不会更新所有引用,python,Python,所以我有这段代码 ... print(F"node id {id(node)}") print(F"left child id {id(prevNode.get_left_child())}") node = None print(F"node id {id(node)}") print(F"left child id {id(prevNode.get_left_child())} ... 这为我提供了以下输出: node

所以我有这段代码

...
print(F"node id {id(node)}")
print(F"left child id {id(prevNode.get_left_child())}")
node = None
print(F"node id {id(node)}")
print(F"left child id {id(prevNode.get_left_child())}
...
这为我提供了以下输出:

node id 4860975032
left child id 4860975032
node id 4383750560
left child id 4860975032
我原以为:

node id 4860975032
left child id 4860975032
node id 4383750560
left child id 4383750560

prevNode.get_left_child()
指向
节点
对象,但当我将
节点
对象设置为
时,它不会更新
prevNode.get_left_child()
引用。这是为什么?

在Python中,将变量设置为
None
只意味着变量不再指向它之前指向的位置,其他变量名称指向同一对象,而对象本身保持不变。

您只是更改了变量指向的位置。你没有碰过这些东西

之前:

None (4383750560)

objectA <-- prevNode
+-> left_child = objectB (4860975032) <-- node
None(4383750560)

objectA left_child=objectB(4860975032)你是什么意思?字符串格式没有大写字母
F
。它工作得很好,你可以同时使用
F
F
afaik.Mm,我现在怀疑我自己。我不认为你can@wjandrea我现在才有机会进行测试,而且确实有效。我对此有点恼火,但我感谢你的回答。所以我想将所有指向这个对象的变量设置为不指向这个对象。我将如何实现这一点?好吧,这在Python中要复杂得多。您可以做一些变通方法来实现这一点,但这就是Python处理变量的方式。你可以读更多。
None (4383750560) <-- node

objectA <-- prevNode
+-> left_child = objectB (4860975032)