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

Python中整数与集合的变量共赋值行为差异原因解析

为什么Python中变量赋值基础类型和集合会有不同表现?

这个问题其实是Python里最基础也最容易踩坑的点——**可变对象(mutable)和不可变对象(immutable)**的区别,我来给你掰扯清楚:

先看整数赋值的场景

当你执行:

>>> x = y = 0
>>> y = 2
>>> x
0
>>> y
2

整数0属于不可变对象,这类对象(比如整数、字符串、元组)一旦创建,就没法修改它们的内容。
x = y = 0只是让x和y两个变量同时指向内存里的同一个整数对象0。但当你执行y = 2时,并不是把原来的0改成2,而是创建了一个新的整数对象2,然后让y指向这个新对象。x仍然指向原来的0,所以两者的值就独立了。

再看集合赋值的场景

集合是可变对象(类似的还有列表、字典),这类对象允许修改自身的内容。当你执行:

>>> a = b = set([])
>>> b.add(2)
>>> a
set([2])
>>> b
set([2])

a = b = set([])让a和b同时指向内存里的同一个空集合对象。而b.add(2)这个操作,并没有创建新的集合,而是直接修改了这个共享的集合对象本身——往里面加了元素2。因为a和b指向的是同一个对象,所以两者的内容自然同步变化。

一句话总结

  • 对于不可变对象:赋值操作是让变量指向新的对象,原对象不会被修改,多个变量之间互不影响;
  • 对于可变对象:修改对象的操作(比如add、append)是直接改变对象本身,所有指向该对象的变量都会看到变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:59:20