i=i+1是否等同于i+=1
说明:增强型赋值语句是经常使用到的,那么我们是否想过i=i+1是否等同于i+=1呢?话不多说,一段代码压压惊.
1 b = [1, 2, 3] 2 print("b未改变的地址:", id(b)) 3 b += [4, 5, 6] 4 print("b已改变的地址:", id(b)) 5 print("b的结果:", b) 6 print("--------------------------") 7 8 a = [1, 2, 3] 9 print("a未改变的地址:", id(a)) 10 a = a + [4, 5, 6] 11 print("a已改变的地址:", id(a)) 12 print("a的结果:", a)
是否和你想的是一致的呢?虽然结果是一样的,但意义是不一样的.
从这里可以看出例二中普通赋值语句发生新内存创建现象,更加说明了一个观点,增强型赋值语句效率高于普通赋值语句.这是因为在python源码中,增强赋值比普通赋值多实现了"写回"功能,也就是说增强赋值语句会以追加的方式进行数据处理,而普通赋值语句会以新的内存创建方式处理数据.