You need to enable JavaScript to run this app. Python中变量重赋值后首次赋值的数值会被如何处理?
优惠活动
大模型
产品
解决方案
定价
更多

Python中变量重赋值后首次赋值的数值会被如何处理?

Python变量重赋值后原有值的去向问题解答

Python中的变量本质上是指向内存对象的引用,并非存储值的容器,你提到的场景可以按执行顺序拆解:

  • 执行a=10时:Python会先在内存中创建一个存储整数10的int类型对象,再将变量名a指向该对象的内存地址
  • 执行a=15时:Python会新创建存储整数15的int类型对象,然后将a的指向修改为新对象的地址,此时存储10的对象就没有任何变量引用了

关于是否会被垃圾回收,需要分两种情况:

通用规则下,没有任何引用指向的对象会被Python的垃圾回收机制标记为可回收,后续会在合适的时机被清理,释放占用的内存。
但你的案例中存在特殊情况:Python默认对[-5, 256]区间的小整数做了驻留优化,这个区间的整数对象会被预先创建、全局保留,哪怕没有变量引用也不会被垃圾回收,目的是减少频繁创建销毁小整数的性能开销。10正好属于驻留区间,所以实际不会被回收;如果是超出该区间的大整数/其他类型的对象,无引用后会被正常回收。

你使用的测试代码逻辑如下:

a = 10
a = 15
print(a)

运行输出结果:15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 10:15:04