1 # coding = utf-8 2 3 a, b = 1, 2 4 print 'before change' 5 print a, b 6 7 a, b = b, a 8 print 'after change' 9 print a, b 10 11 #>>> 12 #before change 13 #1 2 14 #after change 15 #2 1
理解第7行a, b = b, a是關鍵。spa
再看看下面的代碼,過渡到c = b, a:code
1 a = 1 2 b =2 3 c= b 4 print c 5 #2 c = b c指向了一個整數 6 7 c = b, 8 print c 9 #(2,) c = b, c指向了一個元組 10 11 c = b, a 12 print c 13 #(2, 1) c = b ,a c指向了一個元組
原來,賦值號右邊的b, a 組成了元組。在看看如何定義一個元組,就會發現b, a 就是用逗號做爲分割創建了一個元組,這個過程叫作打包。 它和c = (b, a)都是一樣定義了一個元組。可見,()在定義元組的時候並不是是必須的。blog
既然有打包,就有解包。看看下面的代碼:utf-8
1 a, b, c = 1, 2 ,3 2 3 d = a, b, c 4 print d 5 #(1, 2, 3) 將a,b,c所指的值打包成一個元組,賦給d 6 7 e, f ,g = d #將多個變量用逗號隔開並賦予等號右邊元組d中相應位置的值 8 print e 9 #1 10 print f 11 #2 12 print g 13 #3
上面第七行,將多個變量用逗號隔開並賦予等號最右邊元組d中相應位置的值,這個過程叫作解包。class
因此a, b = b, a 就能夠理解成打包和解包的兩個過程,即 c= (b , a); a, b = c 。變量
用打包和解包,能夠實現 不用臨時變量來交換數據。打包