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
