python的賦值是通過「=
」 將右邊的物件
賦值給左邊的變數
,如:
a =
'test'
#將字串賦值給變數a
a =123
#將數值賦值給變臉a
a =[1,
2,3]
#將列表賦值給變數a
通過上面的賦值測試,我們會發現變數a
是沒有型別的,而型別的區別只存在於右側的物件中。故可以將各種型別的物件賦值給變數。在python內部,對於賦值的實現,本質上是建立將變數指向物件的引用過程,並不是將物件進行複製的過程。賦值過程有以下三個特點:
賦值的過程是建立變數到物件的引用的過程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#首先滿足非*的變數,剩下的通過列表複製給待*的變數,如果沒有剩下的值,那麼列表為空。其典型應用詳見小技巧4.
所謂序列賦值,指元組、列表這樣的序列可以一次性對序列長度相等的變數進行賦值。數值必須相等
。如下面的就要報錯:
a,b=1,
2,3valueerror: too many values to unpack (expected 2
)
不僅僅是元組或列表,只要物件切好是可迭代的,那麼就可以執行分解操作,如分解字串、字典:
a,b,c,d,e =
'hello'
dct =
a,b,c = dct #只是將字典中的key 複製給a,b,c
小技巧1:交換兩變數的值:
a =
1b =
1a,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將得到乙個空列表
小技巧4:遞迴求和
p =[1
,10,7
,4,5
,9]#求列表p中個元素之和
defsum_p
(items)
: head,
*tail = items
return head +
sum(tail)
if tail else head
sum_p(p)
#output: 36
就是對多個變數直接賦予乙個初始值,如在程式開始前給多個計數器變數賦值為0:
a=b=c=d=e=
0
此種方式賦值需要注意列表的可變性。
截圖如下了:
解釋乙個例子,其他都類似:
x += y 本質是 x = x + y,先求x+y的和,再將其賦值給xpython變數賦值
從python2.0開始 等號可以和乙個算術操作符組合在一起,將計算結果重新賦值給左邊的變數,這被稱為增量賦值,類似下面的語句 x x 1 現在可以被寫作 x 1增量賦值相對普通賦值不僅僅是寫法上的改變,最有意義的變化是第乙個物件,金盃處理一次,可變物件會被就地修改 無修拷貝引用 不可變物件則和a ...
python 變數賦值
對於變數的內容再去傳遞,傳遞的是物件,有的傳遞物件本身,有的傳遞物件引用。可變資料型別 列表 字典。a 1,2,3 b a c a a 0 8 d 8,2,3 print a 8,2,3 print b 8,2,3 print c 1,2,3 print d 8,2,3 print id a 140...
python賦值中文變數 Python變數引用賦值
不,你不能。正如其他答案所指出的,你可以 ab?使用可變物件的別名來實現類似的效果。然而,這與c 引用不一樣,我想解釋一下實際上發生了什麼,以避免任何誤解。你可以看到,在c 和其他語言 中,變數 和物件字段,以及集合中的條目等 是乙個儲存位置,並且你可以將乙個值 例如,乙個整數 乙個物件或乙個指標 ...