Python 變量交換

 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 變量

用打包和解包,能夠實現 不用臨時變量來交換數據。打包

相關文章
相關標籤/搜索