python 一个关于+=的 谜题
Leonardo Rochael 在 2013 年的 Python 巴西会议上提到这个谜题。
t 变成 (1, 2, [30, 40, 50, 60])。
同时因为 tuple 不支持对它的元素赋值,所以会抛出 TypeError 异常。
t[2] 被改动了,但是也有异常抛出。
如果写成 t[2].extend([50, 60]) 就能避免这个异常
可视化分析
查看其字节码
从中我们能学习到
不要把可变对象放在元组里面。
增量赋值不是一个原子操作。我们刚才也看到了,它虽然抛出了异常,但还是完成了
操作