日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python增量赋值是什么意思_关于python中的增量赋值的理解

發布時間:2025/3/15 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python增量赋值是什么意思_关于python中的增量赋值的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

增量賦值運算符 += 和 *= 的表現取決于它們的第一個操作對象

+= 操作首先會嘗試調用對象的 __ iadd__方法,如果沒有該方法,那么嘗試調用__add__方法,所以+= 與 + 的區別實質是__iadd__ 與 __add__的區別,同理,

*= 操作首先會嘗試調用對象的__imul__方法,如果沒有該方法,那么嘗試調用__mul__方法。

_ add_ 和 _ iadd_ 的區別

_ add_ 方法接收兩個參數,返回它們的和,兩個參數的值均不會改變。

_ iadd_ 方法同樣接收兩個參數,但它是屬于 in-place 操作,就是說它會改變第一個參數的值,因為這需要對象是可變的,所以對于不可變對象沒有__iadd__方法。

hasattr(int,'__iadd__') // False

hasattr(list,'__iadd__) // True

顯然,整數對象是沒有__ iadd__的,而列表對象提供了__iadd__方法。

不可變類型對象 數字

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學習資料?可以加點擊下方鏈接自行獲取

note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

+操作調用的是 _ add_ 方法,該方法會返回一個新的對象,原來的對象保持不變,l1還是指向原來的對象,而l2已經指向一個新的對象。

L1 = range(3)

L2 = L1

L1 += [3]

+= 操作調用的是__iadd__方法,他會原地修改l2指向的那個對象本身的值

一道關于 += 的謎題

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)

總結

以上是生活随笔為你收集整理的python增量赋值是什么意思_关于python中的增量赋值的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。