Leonardo Rochael 在 2013 年的 Python 巴西会议上提到这个谜题。
python 一个关于+=的 谜题
t 变成 (1, 2, [30, 40, 50, 60])。
同时因为 tuple 不支持对它的元素赋值,所以会抛出 TypeError 异常。
t[2] 被改动了,但是也有异常抛出。
如果写成 t[2].extend([50, 60]) 就能避免这个异常

可视化分析
python 一个关于+=的 谜题

查看其字节码python 一个关于+=的 谜题

从中我们能学习到
不要把可变对象放在元组里面。
增量赋值不是一个原子操作。我们刚才也看到了,它虽然抛出了异常,但还是完成了
操作

相关文章:

  • 2021-11-21
  • 2021-09-09
  • 2022-02-01
  • 2021-12-14
  • 2021-06-04
  • 2021-10-28
  • 2021-09-18
猜你喜欢
  • 2022-02-28
  • 2021-12-01
  • 2022-12-23
  • 2021-08-25
  • 2021-11-10
  • 2021-12-06
相关资源
相似解决方案