python中的增強賦值是從c語言中借鑑出來的,所以這些格式的用法大多和c一致,本身就是對表示式的簡寫,即二元表示式和賦值語句的結合,比如a += b
和a = a + b
就是一致的,比如還有以下的增強賦值語句。--
--a += b
a &= b
a -= b
a |= b
a *= b
a ^= b
a /= b
a >>=b
a %= b
a <<= b
a **= b
a //=b
即增強賦值語句適用於任何支援隱式二元表示式的型別,比如「+」的多型:數字的相加和字串的合併
數字加減
a =
1a = a +
1print
(str
(a))
a +=
1print
(str
(a))
示例結果:
2
3
字串合併s =
'i's = s +
' like '
print
(s)s +=
'python.'
print
(s)
示例結果:
i like
i like python.
當我們想要擴充套件列表時,比如將一組元素新增到末尾,我們會怎麼做?
l =[1
,2,3
]# 傳統「+」法
l = l +[4
,5]print
(l)# 利用列表方法extend
l.extend([6
,7])
print
(l)
示例結果
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6, 7]
示例中第一中「+」法,即採用合併的方法,需要新建立乙個物件把左側的l
複製到新列表中,然後再[4, 5]
複製到新列表中。而第二種extend
則是直接在記憶體空間列表l末尾l加上[4, 5]
,即速度會更快,增強賦值則是自動採用的第二種即l.extend([6, 7])
和l += [6, 7]
是等價的,也是最優的選擇。這種合併方式雖然快,但對於可變物件的共享引用則會變的棘手些。
l1 =[1
,2,3
]l2 = l1
l2 = l2 +[4
,5]print
(l2)
print
(l1)
print
('-'*21
)l1 =[1
,2,3
]l2 = l1
l2 +=[4
,5]print
(l2)
print
(l1)
示例結果:
[1, 2, 3, 4, 5]
[1, 2, 3]
---------------------
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
我們可以從示例中看到如果同乙個可變物件賦值了多個變數,那麼在破壞共享引用結構時,就應該對可變物件拷貝後在進行操作。 Python增強賦值和共享引用注意事項小結
概述 python中的增強賦值是從c語言中借鑑出來的,所以這些格式的用法大多和c一致,本身就是對表示式的簡寫,即二元表示式和賦值語句的結合,比如a b 和a a b 就是一致的,比如還有以下的增強賦值語句。a b a b a b a b a b a b a b a b a b a b a b a 程...
Python中多目標賦值及共享引用的問題
多目標賦值語句就是直接把所有提供的變數名都賦值給右側的物件。a b c spam 將字串 spam 同時賦值給a,b,c a,b,c spam spam spam 上面的語句相當於下面的簡單賦值 c spam b c a b a,b,c spam spam spam 在這裡只有乙個物件,由三個變數共...
python 賦值 引用
在 python 中賦值語句總是建立物件的引用值,而不是複製物件。因此,python 變數更像是指標,而不是資料儲存區域,參見 1.在執行以下 的過程中 t temp t t 發現每次temp t新增乙個值時,t也會相同新增乙個值,經查詢,在 python 中賦值語句總是建立物件的引用值,而不是複製...