Python中a,b = b,a语句的内存工作原理是什么?
Python中
a, b = b, a的内存工作原理 这个语句本质是利用了Python的元组打包与解包特性,内存层面的执行步骤很清晰:
- 首先计算等号右侧的表达式
b, a:Python会把b和a当前的内存值(示例里是2和1)打包成一个临时元组,这个元组会被临时存储在内存中。 - 接着执行解包赋值:把临时元组的第一个元素赋值给左侧的
a,第二个元素赋值给左侧的b。 - 赋值完成后,这个临时元组会被Python的垃圾回收机制标记为可回收,后续会被自动清理,不会长期占用内存。
对比传统的交换写法:
temp = a a = b b = temp
a, b = b, a不需要额外定义临时变量temp,而是用语言内置的元组操作完成,内存开销几乎可以忽略,写法也更简洁。
举个具体的内存变化逻辑:
- 初始状态:
a指向内存中存储值1的地址,b指向存储值2的地址。 - 执行
b, a时,创建临时元组,元组的两个元素分别指向2和1的内存地址。 - 解包赋值:让
a重新指向2的地址,b重新指向1的地址。 - 临时元组失去引用,等待被回收。
示例代码验证:
a = 1 b = 2 a, b = b, a print(a, b) # 输出:2 1
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

