今天學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
