Varför l += [1] inte är samma sak som l = l + [1]
När vi t.ex. använder operatorn +
på två värden (objekt), t.ex. 1 + 2
så använder python den magiska metoden __add__()
. En magisk metod är en metod som börjar och slutar på __
, som t.ex. __init__()
. De används automatiskt av Python vid olika tillfällen. Metoden __init__()
används t.ex. när en ny instans av en klass skapas och metoden __add__()
används när operatorn +
ska appliceras på ett objekt (för inbyggda datatyper är standardbeteendet hårdkodat).
Det signifikanta här är att operatorn +
använder sig av den magiska metoden __add__()
, medan +=
, uttökad tilldelning, använder sig av den magiska metoden __iadd__()
. För listor, så skiljer sig __add__()
från __iadd__()
på så sätt att __iadd__()
lägger till värdet till den existerande listan, medan __add__()
skapar en ny lista.
Detta betyder att
|
|
kommer att skriva ut ["a", "b"]
, medan
|
|
kommer att skriva ut ["a"]
.
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2019-02-18