>>> a = 'abc' # 普通形式
>>> b = 123
>>> c = [1, 2, 3]
python中"="的右側可以接受任意型別的序列,也可以是可迭代的物件,只要長度等於左側序列即可。
>>> (a, b) = ('1', '2') # 元組賦值,括號可省略
>>> [a, b] = ['1', '2'] # 列表賦值
>>> a, b, c, d = 'spam' # 字串序列賦值
# python中交換兩個變數的值可以不用穿件第三個臨時變數
>>> x, y = 1, 2
>>> x, y = y, x
>>> x, y
(2, 1)
# 當等號左側與右側變數長度不一致時,考慮用分片解決
>>> num = '123'
>>> a, b = num[:1], num[1:]
>>> a, b
('1', '23')
>>> num = '123'
>>> a, b = list(num[:1]) + [num[1:]]
>>> a, b
('1', '23')
# 巢狀賦值
>>> ((a, b), c) = ('12','3')
>>> a, b, c
('1', '2', '3')
*x
:序列賦值時,帶有*的名稱會被賦值乙個列表,該列表收集序列中剩下的沒被賦值給其他名稱的所有項,可用於=
左右兩側變數數目不同的情況。
>>> num = [1, 2, 3, 4]
>>> a, b = num # 變數個數不同會報錯
traceback (most recent call last):
file "", line 1, in valueerror: too many values to unpack (expected 2)
>>> a, *b = num # 擴充套件序列解包
>>> a, b
(1, [2, 3, 4])
>>> first, *mid, last = num # 擴充套件序列解包的*可以出現在任何位置
>>> first, mid, last
(1, [2, 3], 4)
1. 帶星號的名稱值匹配到單個項,但仍然返回乙個列表>>> a = [1, 2, 3, 4]
>>> b, c, d, *e = a
>>> (b, c, d, e)
(1, 2, 3, [4])
2. 若帶星號的名稱不能匹配到任何項,則返回乙個空列表>>> a = [1, 2, 3, 4]
>>> b, c, d, e, *f = a
>>> (b, c, d, e, f)
(1, 2, 3, 4, )
3. 若用了多個帶星號的名稱則會報錯>>> a = [1, 2, 3, 4]
>>> *b, c, *d = a
file "", line 1
syntaxerror: two starred expressions in assignment
4. 帶星號的名稱沒有被編寫到乙個列表中會報錯>>> a = [1, 2, 3, 4]
>>> *b = a
file "", line 1
syntaxerror: starred assignment target must be in a list or tuple
>>> *b, = a
>>> b
[1, 2, 3, 4]
多目標賦值即將最右側的物件依次賦值給左側所有的名稱。
>>> a = b = c = 0
>>> (a, b, c)
(0, 0, 0)
多目標賦值其實是多個目標對同乙個記憶體空間的引用,這裡要分兩種情況,當被引用物件是不可變物件時則不存在問題;但是如果多目標都引用了同乙個可變物件,則會出現問題
>>> a = b = 1
>>> (a, b)
(1, 1)
>>> b = 2
>>> (a, b)
(1, 2)
# a的值沒有因為b的改變而改變
>>> a = b = [1, 2]
>>> (a, b)
([1, 2], [1, 2])
>>> b[1] = 3
>>> (a, b)
([1, 3], [1, 3])
# a的值隨著b值得改變而改變,即使沒有主動給a賦值,這是因為a,b同時引用了乙個可變物件,改變該物件則會通知改變a和b的值
Python 中的賦值
一 基本的賦值 如 a 3 這樣的 二 多個變數同時賦值 x,y,z 1,python hello world x 1 y python z hello world 三 把幾個值賦給乙個變數 a zhrq95 python a zhrq95 python 即 將右邊的兩個值裝入了乙個元組,然後將元組...
python中的賦值
一 python有簡單的賦值,如x 1 二 序列賦值,如 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 1,b 2,...
python中的增量賦值
1,對可變的資料型別 a 1,2,3 print id a 1602469350792 b 4,5 a a b print a,id a 1,2,3,4,5 1602469421512 a 1,2,3 print id a 1736417136008 b 4,5 a b print a,id a 1...