日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中a and b什么意思_Python中的a+=b和a=a+b之间的区别是什么?

發布時間:2025/3/15 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中a and b什么意思_Python中的a+=b和a=a+b之间的区别是什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我一直以為a+=b和a=a+b是一樣的,畢竟效果是一樣的嘛。后來我發現并不是這么回事?我發現當變量是不可變對象時,a+=b和a=a+b是一樣的,不過我注意到了前后兩個a已經不是同一個對象了。而當變量是可變對象時,雖然a+=b和a=a+b的效果是一樣的,但是a=a+b前后的兩個a也不是同一個對象了,而a+=b前后兩個a還是同一個對象。

# 不可變對象

# a+=b 前后的a不是同一個對象

>>> a=1

>>> b=2

>>> id(a)

140722530604704

>>> a+=b

>>> id(a)

140722530604768

>>> print(a)

3

# a=a+b 前后的a也不是同一個對象

>>> a=1

>>> b=2

>>> id(a)

140722530604704

>>> a=a+b

>>> id(a)

140722530604768

>>> print(a)

3

# 可變對象

# a+=b 前后的a是同一個對象

>>> a=[1,2]

>>> b=[3,4]

>>> id(a)

214391266944

>>> a+=b

>>> id(a)

214391266944

>>> print(a)

[1, 2, 3, 4]

# a=a+b 前后的a不是同一個對象

>>> a=[1,2]

>>> b=[3,4]

>>> id(a)

2143494790272

>>> a=a+b

>>> id(a)

2143494790592

>>> print(a)

[1, 2, 3, 4]

這是怎么回事呢?看了一下各位大佬寫的文章,總算是弄明白了一些。

+操作調用的是__add__方法

__add__方法會返回一個新的對象,原對象不修改。

+=操作調用了__iadd__方法

__iadd__方法直接在原對象上進行更新,該方法的返回值為None。

沒有該方法時,再嘗試調用__add__方法。

不可變對象只有__add__方法,沒有__iadd__

可變對象有__add__方法,也有__iadd__

結論

當變量是不可變對象時,a+=b和a=a+b調用的都是__add__方法,返回的是一個新對象

當變量是可變對象時,a+=b調用的是__iadd__方法,直接在原對象上進行更新;a=a+b調用的是__add__方法,返回一個新對象

總結

以上是生活随笔為你收集整理的python中a and b什么意思_Python中的a+=b和a=a+b之间的区别是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

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