You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码中将a赋值给b后修改a,print(b)为何不输出更新后的3?

问题原因解答

这是Python的变量赋值逻辑决定的,核心原因是Python中的变量本质是指向内存数据的引用(标签),而非存储数据的容器:

  • 执行a = 2时,Python会先在内存中创建整数对象2,再将变量a作为标签绑定到这个对象上
  • 执行b = a时,本质是给内存中的2对象新增一个绑定标签b,此时a和b同时指向同一个整数对象2
  • 执行a = 3时,Python会创建新的整数对象3,再将a标签从2对象上解绑,重新绑定到新的3对象上。这个操作只会修改a的指向,完全不会影响b和2对象的绑定关系
  • 最后执行print(b)时,读取的是b当前绑定的2对象的值,因此输出结果为2

变量同步更新的适用场景

只有当多个变量同时绑定到同一个可变对象(比如列表、字典、自定义类实例)时,修改该对象本身的内容,所有绑定它的变量才会同步感知到变化,示例如下:

a = [1, 2, 3]
b = a
# 此处是修改可变对象本身的内容,不是给a重新赋值
a.append(4)
print(b) # 输出结果为 [1, 2, 3, 4]

该场景和你的代码核心差异是:你的代码是给变量重新赋值(修改变量的绑定对象),而上述示例是修改可变对象自身的内容(变量的绑定关系没有变化)。

内容的提问来源于stack exchange,提问作者Jotate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 05:18:02