Du tror en streng kan endres på plass (tegn for tegn)

Handler om: Streng (tekst)

Strenger i Python er uforanderlige (immutable). Du kan LESE et tegn med navn[0], men ikke skrive: navn[0] = "K" gir TypeError. Metoder som upper() og strip() endrer heller ikke strengen — de gir en NY streng tilbake, som du må ta vare på med en tilordning.

Eksempel

Du skriver navn.upper() på egen linje og lurer på hvorfor navn fortsatt har små bokstaver — metoden ga en ny streng som ingen tok vare på.

Slik tenker du riktig om det

Tenk på strengen som støpt i ett stykke: du kan lage en NY (navn.upper(), navn + "!"), men aldri flikke på den gamle. Mønsteret er alltid navn = navn.metode().

Slik ser det ut i kode

Slik gikk det galt

navn = "ada"
navn.upper()          # gjoer ingenting synlig
print(navn)           # ada

Slik fikser du det

navn = "ada"
navn = navn.upper()   # ta vare paa den NYE strengen
print(navn)           # ADA

Les om dette i boka

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