永发信息网

Python 中 a+=b 和 a=a+b 的区别有哪些

答案:1  悬赏:0  手机版
解决时间 2021-04-07 10:32
Python 中 a+=b 和 a=a+b 的区别有哪些
最佳答案
a+=b
>>> a1 = range(3)
>>> a2 = a1
>>> a2 += [3]
>>> a1
[0, 1, 2, 3]
>>> a2
[0, 1, 2, 3]
a=a+b
>>> a1 = range(3)
>>> a2 = a1
>>> a2 = a2 + [3]
>>> a1
[0, 1, 2]
>>> a2
[0, 1, 2, 3]
显然,两者是有区别的,而这种区别只出现在可变对象上(为什么是可变对象后面再说),是什么原因造成了两者的区别呢?
+= 操作调用 __iadd__方法,没有该方法时,再尝试调用__add__方法
a1 = [0, 1, 2]
a1 += [3]
# 等价于
a1.__iadd__([3])
print(a1) #[0, 1, 2, 3]
__iadd__方法直接在原对象a1上进行更新,该方法的返回值为None
+ 操作调用__add__方法
a1 = [0, 1, 2]
a1 = a1 + [3]
# 等价于
a1 = a1.__add__([3])
__add__方法会返回一个新的对象,原对象不修改,因为这里 a1被重新赋值了,a1指向了一个新的对象,所以出现了文章开头a1不等于a2的情况
a1 = [0, 1, 2]
print(a1.__add__([3])) # [0, 1, 2, 3]
print(a1) # [0, 1, 2]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
重庆和贵州哪个富裕一些
丽水市中医院我想知道这个在什么地方
轻型消防车和重型消防车的重量是多少?
两灯串联,一盏灯较亮,另一盏电灯较暗,则通
在纸的发明之前,人们是采用什么作为记事材料
为什么外国灾难中总是没有中方人员伤亡?
请教一下,四五星级酒店名称的日语读法
明明很困却没睡觉 感觉人都傻了
帮忙写朱自清记人散文艺术浅析的提纲
需要一篇学会会生活部的厨艺大赛策划书
哪里多了个潜水点,潜水下去可捕捉lv.70海皇牙
赵巷镇方夏村刘夏卫生室怎么去啊,有知道地址
什么中草药泡茶去火最佳???
here are some tips fou you单词是什么意思
美人为馅第三季12月12号几点播出
推荐资讯
航天员在太空里是怎么拉屎拉尿的?
咏柳的诗人是谁
求fripSide的歌last fortune的中文歌词
港版xbox one上的暗黑血统3是汉化版吗
表示“被困在”的三个英语短语。意思是被困在
瓜叶菊的花语是什么 瓜叶菊花期是什么时候
matlab中对训练数据进行训练,怎么得出knn分
作文《我眼中的上海》500字
手机主要有那些配件,内部主要有那些结构?
如何在word中把3月1号改成1th th在数字的左上
丰田汉兰达断电后,打燃加不起油,怎么做初始
求《佛说》QQ空间背景音乐链接
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?