一、什麼是賦值
python的賦值是通過“=
” 將右邊的對象
賦值給左邊的變量
,如:
a = 'test' #將字符串賦值給變量a
a = 123 #將數值賦值給變臉a
a = [1,2,3] #將列表賦值給變量a
通過上面的賦值測試,我們會發現變量a
是沒有類型的,而類型的區別只存在於右側的對象中。故可以將各種類型的對象賦值給變量。在Python內部,對於賦值的實現,本質上是建立將變量指向對象的引用過程,並不是將對象進行復制的過程。賦值過程有以下三個特點:
- 賦值的過程是建立變量到對象的引用的過程
- 變量在首次賦值時被創建
- 變量在引用前必須先賦值
二、賦值類型
1. 序列賦值
python將=
右側序列的值依次和左側的序列中的變量相互對應匹配,給每一個變量賦值,如:
a,b,c = [1,2,3]
a,b,c=(1,2,3)
(a,b,c)=1,2,3
(a,b,c)=[1,2,3]
a,b,c=1,2,3
所謂序列賦值,指元組、列表這樣的序列可以一次性對序列長度相等的變量進行賦值。數值必須相等
。如下面的就要報錯:
a,b=1,2,3
ValueError: too many values to unpack (expected 2)
小技巧1:交換兩變量的值:
a = 1
b = 1
a,b =b,a #完成a,b值的交換
小技巧2:依次給變量賦值n個整數
a,b,c,d,e,f = range(6)
小技巧3:如果=
兩邊長度不相等怎麼處理呢?處理如下:
給需要單獨處理的變量前加上*
,此時在賦值時如果不能對應,那麼就會通過將一個列表賦值給該變量,列表中的內容爲按序多出來的對象或者空列表
a,b,c=1,2,3,4 #會報錯
a,b,*c=1,2,3,4 #c爲[3,4],a,b正常賦值
a,*b,c=1,2,3,4 #b爲[2,3],a,c正常賦值
*a,b,c=1,2,3,4 #a爲[1,2],b,c正常賦值
a,b,c,d,*e=1,2,3,4 #e將得到一個空列表
2. 多目標賦值
就是對多個變量直接賦予一個初始值,如在程序開始前給多個計數器變量賦值爲0:
a=b=c=d=e=0
此種方式賦值需要注意列表的可變性。
3. 增強賦值語句
截圖如下了:
解釋一個例子,其他都類似:
X += Y 本質是 X = X + Y,先求X+Y的和,再將其賦值給X