譬如有兩個 list a 和 b,使用 a.extend(b) 和 a += b 有什麼相同或不同?有沒有什麼 general 的 best practice for using one rather than the other?
其實在這個情境下,這兩個用法幾乎一樣。它們都會直接 in-place 的修改 a,把 b 裡面的元素加到 a 的後面
+=會呼叫 list 的.__iadd__()來做 in-place 的修改- 所以在這個情境下,
b可以是任何 iterable,譬如[] += {}會得到[] - 假如用
+=的是 immutable 的 type,Python 發現沒有.__iadd__(),接著就會呼叫它的.__add__(),此情況下a += b等同於a = a + b
- 所以在這個情境下,
以下列出少數有差別的地方: