首页 > 技术文章 > python 两数交换新写法原理

cheneyboon 2019-09-30 18:30 原文

今天学python,突然发现没有swap函数,那怎么交换两个数呢,难道手写交换,那效率太差了
 
我们看一下实例
 
a = 1
b = 2

a,b = b,a

print(a,b)
 
其实很简单的原理,然而我却琢磨了半天,可能陷入了过程化编程的思维里,一直纠结a和b到底谁先赋值,怎么交换了,想了半天百度一下,瞬间清晰了
 
个人想法:
变量只是存储一个值,我们用用新变量指向另一个变量时,其实指向的是另一个变量存储的值
那么这里就可以这么理解了,a,b = b,a 其实变相的给前面 a,b  两个变量他们的指向的值

 

那么  a = b   b = a 为何又不行呢

 

因为 前面   a = b  时,变量  a  已经指向了b 的值,而后面  b = a  则把a指向的值又传给了b
导致 a = b

 

其实 a,b  =  b,a  的运行步骤应该是
1、在内存中找到b的值,a的值   例如:b = 1  a = 2
2、重新赋值 a,b = 1,2

推荐阅读