python中的增量賦值

2021-08-27 18:47:52 字數 1123 閱讀 6015

**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, 2, 3, 4, 5] 1736417136008

對可變資料型別,a= a+b 和 a+=b 他們得到的新的列表的元素是一致的,但是他們的記憶體位址乙個和原列表a的一致,乙個不一致。

2,對不可變資料型別

a=(1,2,3)

print(id(a)) #2352934763832

b=(3,4)

a=a+b

print(a,id(a)) #(1, 2, 3, 3, 4) 2352934103616

a=(1,2,3)

print(id(a)) #2128999628088

b=(3,4)

a+=b

print(a,id(a)) #(1, 2, 3, 3, 4) 2128998967872

對不可變資料型別,a= a+b 和 a+=b 他們得到的新的列表的元素是一致的,他們的記憶體位址也都和原列表不一致。

+=呼叫的是__iadd__方法,此方法是就地加法。

當類的內部有__iadd__方法的時候,遇到+=會優先呼叫此方法,沒有的時候,會退而求其次,呼叫__add__方法。

對列表而言,a +=b就相當於a.extend(b)。

print("__iadd__" in dir(list))      #true

print("__add__" in dir(list)) #true

print("__iadd__" in dir(tuple)) #false

print("__add__" in dir(tuple)) #true

Python序列的增量賦值 和

增量賦值運算子 和 的表現取決於它們第乙個的操作物件。例如 背後的特殊方法是 iadd 用於就地加法 但是如果乙個序列沒有實現這個方法,python會退一步呼叫 add 以 a b為例 如果a實現了 iadd 方法,就會呼叫這個方法。同時對於可變序列 例如list 來說,a就會就地改動,就行呼叫了a...

分析序列的增量賦值 ,

如 對於可變序列,如list,bytearrary和array.aray 實現了 iadd imul 就地運算 增量運算後,新元素追加到可變序列後,該序列的id不變 對於不可變序列,沒有實現上述方法,就需要建立個新物件,然後賦值,如a b,相當於a a b 例子 l 1,2,3 id l 47410...

Python 中的賦值

一 基本的賦值 如 a 3 這樣的 二 多個變數同時賦值 x,y,z 1,python hello world x 1 y python z hello world 三 把幾個值賦給乙個變數 a zhrq95 python a zhrq95 python 即 將右邊的兩個值裝入了乙個元組,然後將元組...