python增量赋值是什么意思_关于python中的增量赋值的理解
增量賦值運(yùn)算符 += 和 *= 的表現(xiàn)取決于它們的第一個操作對象
+= 操作首先會嘗試調(diào)用對象的 __ iadd__方法,如果沒有該方法,那么嘗試調(diào)用__add__方法,所以+= 與 + 的區(qū)別實質(zhì)是__iadd__ 與 __add__的區(qū)別,同理,
*= 操作首先會嘗試調(diào)用對象的__imul__方法,如果沒有該方法,那么嘗試調(diào)用__mul__方法。
_ add_ 和 _ iadd_ 的區(qū)別
_ add_ 方法接收兩個參數(shù),返回它們的和,兩個參數(shù)的值均不會改變。
_ iadd_ 方法同樣接收兩個參數(shù),但它是屬于 in-place 操作,就是說它會改變第一個參數(shù)的值,因為這需要對象是可變的,所以對于不可變對象沒有__iadd__方法。
hasattr(int,'__iadd__') // False
hasattr(list,'__iadd__) // True
顯然,整數(shù)對象是沒有__ iadd__的,而列表對象提供了__iadd__方法。
不可變類型對象 數(shù)字
a = 123
id(a)
>>> 1688042320
a += 123
id(a)
>>> 246
>>> 1688046256
a *= 2
id(a)
>>> 492
>>> 1688052012
可變類型對象的列表
L = [1,2,3]
id(L)
>>> 4311953800
L *= 2
>>> [1,2,3,1,2,3]
id(L)
>>> 4311953800
___________________________
t = (1,2,3)
id(t)
>>> 4312681568
t *= 2
id(t)
>>> 4301348296
L1 = range(3)
L2 = L1
L1 = L1 + [3]
PS:遇到問題沒人解答?需要Python學(xué)習(xí)資料?可以加點擊下方鏈接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76
+操作調(diào)用的是 _ add_ 方法,該方法會返回一個新的對象,原來的對象保持不變,l1還是指向原來的對象,而l2已經(jīng)指向一個新的對象。
L1 = range(3)
L2 = L1
L1 += [3]
+= 操作調(diào)用的是__iadd__方法,他會原地修改l2指向的那個對象本身的值
一道關(guān)于 += 的謎題
t = (1,2,[3,4],7)
t[2].append(5)
>>> (1,2,[3,4,5],7)
t[2] += [6]
>>> Traceback (most recent call last):
File "", line 1, in
TypeError: 'tuple' object does not support item assignment
t
>>> (1,2,[3,4,5,6],7)
總結(jié)
以上是生活随笔為你收集整理的python增量赋值是什么意思_关于python中的增量赋值的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 台达伺服电机选型手册_机械加工工艺师手册
- 下一篇: xshell堡垒机_Jumpserver