首页 > 代码库 > 序列的增量赋值 +=和*=
序列的增量赋值 +=和*=
+=的实现是通过__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
序列的增量赋值 +=和*=
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。