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

Python不可变对象赋值疑问:为何重赋值未同步至关联变量?

Python变量赋值行为解析

先看你的代码示例:

name = "jim"
student = name
name = "tim"

print(name) # 输出 tim
print(student) # 输出 jim

核心逻辑:变量是对象的引用,不是容器

Python里的变量本质是指向内存中对象的引用(可理解为指向对象的指针),而非存储值的容器。拆解每一步的具体行为:

  • name = "jim":Python在内存中创建字符串对象"jim",让变量name指向这个对象的内存地址。
  • student = name:将name当前指向的地址复制给student,此时name和student同时指向同一个"jim"对象。
  • name = "tim":并非修改原有"jim"对象,而是在内存中新生成字符串对象"tim",然后把name的指向切换到这个新对象。student的指向未发生变化,依然指向原来的"jim",因此打印结果不同。

关键原因:不可变对象的特性

字符串属于Python的不可变对象——一旦创建就无法修改其内部内容。你给name重新赋值"tim"的操作,本质是切换变量的引用目标,而非修改原有对象。如果是列表这类可变对象,直接修改对象内容时,所有指向它的变量都会同步看到变化,但此场景是变量引用的切换,和对象本身的修改无关。

相关技术术语(方便深入研究)

  • 对象引用:变量与内存对象的关联关系,变量存储的是对象的内存地址。
  • 不可变对象:创建后无法修改内部内容的对象,如字符串、整数、元组。
  • 可变对象:可修改内部内容的对象,如列表、字典、集合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:35:11