Du tror listemetoder må tilordnes tilbake

Handler om: Liste, Streng (tekst)

Strenger kan ikke endres — `tekst.upper()` lager en ny streng du må ta vare på. Lister er motsatt: `liste.append(3)` endrer lista på plass og returnerer `None`. Skriver du `liste = liste.append(3)`, kaster du lista og sitter igjen med `None`.

Eksempel

Etter `tallene = tallene.append(5)` er `tallene` blitt `None`, og neste linje krasjer.

Slik tenker du riktig om det

Del metodene i to: de som *lager noe nytt* (`upper`, `sorted`) må tilordnes; de som *endrer på plass* (`append`, `sort`) skal ikke. Returverdien `None` er selve signalet om at noe ble endret på plass.

Slik ser det ut i kode

Slik gikk det galt

tallene = tallene.append(5)    # tallene blir None

Slik fikser du det

tallene.append(5)              # lista endres på plass

Les om dette i boka

↓↑ naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala