Variabler kjenner vi fra matematikken, typisk med navn som x og y. Også i programmering er variabler sentralt, og de fungerer på mange måter som i matematikken. Variabler kan vi tenke på som navn som representerer verdier. På denne siden lar vi disse verdiene være tall, men variabler kan også representere mye annet, for eksempel strenger.
Nøyaktig hvordan variabler teknisk knyttes til verdier, er detaljer vi ikke skal gå inn i på denne siden. For å uttrykke at en variabel er knyttet til en verdi, kommer vi til å si at variabelen har en verdi, og for å uttrykke at en variabel blir knyttet til en verdi, kommer vi til å si at variabelen tilordnes, får eller gis en verdi.
For å gi en variabel en verdi skriver vi først variabelnavnet, så et likhetstegn, og så verdien vi vil gi til variabelen. For å gi variabelen x verdien 4, for eksempel, skriver vi
x = 4
Likhetstegnet i programmering er ikke det samme som likhetstegnet vi kjenner fra matematikken. Det betyr ikke at det som står på venstre side, er lik det som står på høyre side, men at verdien på høyre side tilordnes variabelen på venstre side. Symbolet = kalles en tilordningsoperator.
En variabel beholder verdien den har fått, inntil vi endrer den. Hvis vi for eksempel har satt x = 4, og så skriver
print(x)
skrives 4 ut.
Vi kan gjerne gjøre beregninger og tilordning samtidig. Skriver vi for eksempel
sum = 4 + 7 + 9
får sum verdien 4 + 7 + 9 = 20. Tilordningsoperatoren, =, har lavere prioritet enn de aritmetiske operatorene, slik at addisjonene blir gjort først, deretter blir resultatet tilordnet sum.
Vi kan tilordne verdier fra én variabel til en annen.
Eksempel 1:
Python-koden under vil først gi variabelen produkt verdien 2 · 3 = 6, deretter gi variabelen sum verdien produkt + 4, altså 6 + 4, som blir 10, og til slutt skrive denne verdien ut.
produkt = 2 * 3 sum = produkt + 4 print(sum)
Eksempel 1 illustrerer også prinsippet om at når vi har flere linjer med kode, kjøres de én for én fra toppen og nedover. Dette kaller vi sekvens. I eksempel 2 har vi endret sekvensen fra eksempel 1. Der referer vi til verdien til produkt før produkt har fått en verdi, noe som resulterer i en feilmelding.
Eksempel 2:
Python-koden under vil resultere i en feilmelding fordi produkt ikke har noen verdi i første linje.
sum = produkt + 4 produkt = 2 * 3 print(sum)
Kode som står i én linje, påvirker ikke kode som står i en linje høyere opp.
Eksempel 3:
I Python-koden under gir vi i første linje variabelen a verdien 7. I andre linje gir vi variabelen b verdien a har, altså 7, og i tredje linje gir vi a en ny verdi, nemlig 9. Dette påvirker imidlertid ikke variabelen b, som beholder verdien 7. Så i siste linje får vi skrevet ut 9 7. Legg merke til at vi kan bruke print() til å skrive ut verdien til flere variabler samtidig, ved å angi variabelnavnene med komma mellom.
a = 7 b = a a = 9 print(a, b)
I Thonny kan vi holde øye med verdien til variabler ved å vise variabelfeltet. («Vis» – «Variabler»). Etter å ha kjørt koden i eksempel 3, viser variabelfeltet dette:

Regn ut for hånd hvilke verdier for a, b og c som vil bli skrevet ut av Python-koden under. Kjør så koden for å sjekke om du har regnet riktig.
a = 1 b = 2 c = 3 a = a + b + c b = a + b + c c = a + b + c print(a, b, c)
Vi kan også endre verdien til en variabel ved å ha variabelnavnet på begge sider av likhetstegnet. For eksempel betyr koden i eksempel 4 at x skal settes lik sin egen verdi pluss 3. Har for eksempel x verdien 10 før koden kjøres, vil x ha verdien 13 etter at koden er kjørt. Hvis x ikke har en verdi før koden kjøres, får vi en feilmelding.
Eksempel 4:
x = x + 3
I eksempel 4 er det tydelig at symbolet = ikke er det samme som det matematiske likhetstegnet. Det er jo ikke mulig for en variabel å være lik seg selv pluss 3.
I Python, og mange andre programmeringsspråk, finnes det imidlertid utvidede varianter av tilordningsoperatoren som kan brukes til å endre verdien til en variabel. De består av en aritmetisk operator foran likhetstegnet, for eksempel +=, *= eller /=, for å henholdsvis addere noe til variabelen, multiplisere variabelen med noe og dividere variabelen med noe.
Vi kan for eksempel skrive x += 3 i stedet for x = x + 3, y *= 5 i stedet for y = y * 5, og z /= 8 i stedet for z = z/8. Alle aritmetiske operatorer kan brukes i kombinasjon med tilordningsoperatoren på denne måten.
Det kan ikke være mellomrom mellom den aritmetiske operatoren og tilordningsoperatoren, de to utgjør en enhet som ikke kan splittes. Det er altså feil å skrive for eksempel x + = 3.
Avgjør hvilket tall Python-koden under skriver ut:
x = 5 x *= 2 y = x + 3*x y += 2 print(y)
Gjør først beregningene i hodet, eller med penn og papir, og sjekk så om du har rett ved å kjøre koden.
Regler for variabelnavn
I matematikken bruker vi gjerne variabelnavn som består av én bokstav, men i programmering bruker vi ofte variabelnavn som består av flere bokstaver. Det er lurt å bruke variabelnavn som forteller noe om hva variabelen brukes til, for eksempel alder, hvis variabelen skal brukes til å representere en persons alder.
Variabelnavn i Python kan bestå av bokstaver, tall og understrekning, men kan ikke starte med et tall. Variabler kan ikke hete det samme som kodeord i Python, for eksempel if og else. I Thonny er det lett å se hva som er kodeord fordi de markeres med fet skrift og mørk lilla farge. W3 Schools har en oversikt over alle kodeord.
Eksempel 5:
Dette er tillatte variabelnavn:
bond
bond007
bond_007
Dette er ikke tillatte variabelnavn:
bond$007 (Inneholder tegnet $)
bond 007 (Inneholder mellomrom)
007bond (Begynner ikke med bokstav eller _)
while (Kodeord)
Stilguiden PEP 8 fraråder å bruke navn som finnes blant Pythons innebygde funksjoner, for eksempel print. Det er altså ikke direkte ulovlig å ha en variabel som heter print, men det er svært egnet til å skape forvirring, og noe vi absolutt skal unngå. På Pythons referansesider finnes en oversikt over innebygde funksjoner.
I Python, som i mange andre programmeringsspråk, skilles det mellom små og store bokstaver. Variabelnavnet bond er altså ikke det samme som variabelnavnet Bond. Python-koden
bond = 7 print(Bond)
vil for eksempel resultere i en feilmelding fordi vi gir en verdi til variabelen bond, men prøver å skrive ut verdien til variabelen Bond, som ikke eksisterer.
Ifølge stilguiden PEP 8 bør vi imidlertid bare bruke små bokstaver i variabelnavn. Det er altså ikke ulovlig med store bokstaver, men det er et brudd på anbefalt stil, og en feilkilde vi skal unngå. PEP 8 anbefaler også å bare bruke bokstavene i det latinske alfabetet, altså a-z, og unngå nasjonale bokstaver som æ, ø og å. Variabelnavn som er satt sammen av enkeltord, kan vi dele opp med understreking for å gjøre dem mer lesbare, såkalt snake_case. For eksempel totalt_antall_brukere i stedet for totaltantallbrukere. PEP 8 anbefaler også at vanlige variabelnavn ikke starter med understrekning. Variabelnavn som starter med understrekning, har en spesiell tolkning i Python.
Python-koden under er ment å gi verdier til to variabler, og så gi summen av verdiene til en tredje variabel. Koden inneholder imidlertid to feil. Forklar hvilke det er, og skriv koden riktig.
x1 = 5 2x = 11 x3 = 2x + X1 print(x3)
Kilder
-
- Matthes A. (2019). Python Crash Course. no starch press
Programmeringsspråk som C og JavaScript har egne operatorer for å øke og redusere verdien til en variabel med 1, henholdsvis ++ (inkrement) og — (dekrement). Disse eksisterer ikke i Python. Skriver vi for eksempel –x, betyr det -(-x), altså at vi skifter fortegn på x to ganger, noe som ikke har noen effekt. ++x har heller ingen effekt.
Se film om variabler