码迷,mamicode.com
首页 > 其他好文 > 详细

序列的增量赋值 +=和*=

时间:2017-06-19 10:57:05      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:对象   print   int   相同   color   highlight   可变   pytho   logs   

+=的实现是通过__iadd__实现的,如果类中没有实现__iadd__方法,那么就会调用__add__方法;

可变序列:调用的是__iadd__方法;

不可变序列:调用的是__add__方法;

+和*操作都会先创建新的对象,然后做拼接操作;

__iadd__不会创建新的序列,而是在原来的序列上做增量操作;

 

不可变序列不会调用__iadd__方法,所以必然会创建新的序列,造成资源的浪费,所以不可变序列使用+=和  +操作效果是相同的(str除外);

 

l = [1,2,3]
print(id(l))
l *= 2
print(l)
print(id(l))
t = (1,2,3)
print(id(t))
t *= 2
print(id(t))


17505976
[1, 2, 3, 1, 2, 3]
17505976
17269984
17085080

 

序列的增量赋值 +=和*=

标签:对象   print   int   相同   color   highlight   可变   pytho   logs   

原文地址:http://www.cnblogs.com/cqq-20151202/p/7047470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!