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

Python中变量赋值行为为何存在差异?

为什么Python中两种赋值操作结果不同?

这核心原因是Python里不可变对象和可变对象的赋值逻辑差异,以及变量本质是"对象引用"而非"数据容器"。

示例1:不可变对象的赋值

整数属于不可变类型,一旦创建就不能修改内部值:

n = 1
m = n
n = 2
print(n)   # 2
print(m)   # 1
  • n = 1:变量n指向内存中值为1的整数对象。
  • m = n:变量m也关联到同一个值为1的整数对象。
  • n = 2:不是修改原来的1,而是让n重新指向一个新的、值为2的整数对象。原来的1对象仍存在,m依然关联它,所以m输出1。

示例2:可变对象的赋值

列表属于可变类型,可以直接修改内部内容:

names = ["a", "b", "c"]
visitor = names
names.pop()
print(names)      # ['a', 'b']
print(visitor)    # ['a', 'b']
  • names = ["a", "b", "c"]:变量names指向内存中的这个列表对象。
  • visitor = names:变量visitor也关联到同一个列表对象。
  • names.pop():直接修改了这个列表对象的内部(删除最后一个元素),并没有让names指向新对象。因为visitor和names关联同一个对象,所以visitor输出的也是修改后的列表。

关键总结

  • Python变量是"对象标签",不是装数据的盒子,赋值就是把标签贴到对象上。
  • 不可变对象(整数、字符串、元组等):无法修改内部,重新赋值=贴新标签到新对象。
  • 可变对象(列表、字典、集合等):可以修改内部,所有关联它的标签都会看到变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:57:36