Variabler og uttrykk


Variabler

En variabel er en referanse til en verdi.

# Symbolet '=' betyr her at vi tilordner verdien 5 til variabelen x
x = 5
print(x)     # 5
print(2 * x) # 10
print(x)     # fremdeles 5

Til forskjell fra matematikk, kan en variabel i Python endre verdi.

y = 10      # Variabelen y refererer nå til verdien 10
print(y)    # 10

y = True    # Variabelen y refererer nå til verdien True
y = "Hei"   # Variabelen y refererer nå til verdien "Hei"
y = 11      # Variabelen y refererer nå til verdien 11
y = y + 1   # Variabelen y refererer nå til verdien 12
print(y)    # 12
print(y)    # fremdeles 12

Legg merke til at uttrykket y = y + 1 er en fullstending meningsfull ting å skrive i programmering, mens det ville vært en selvmotsigelse å skrive det samme i matematikk. I programmering skal utsagnet tolkes slik: «la y fra nå av referere til en verdi som er én høyere enn hva den refererte til tidligere».

Vi bestemmer selv hva variablene skal hete, så lenge de begynner med en bokstav og ikke inneholder spesielle tegn (bortsett fra _).

antall_studenter = 800
antall_gruppeledere = 42
kurskode = "INF100"
99problemer = True # Krasjer, variabler kan ikke begynne med tall
Tilordning

En variabel tilordnes verdi ved bruk av tilordningsoperasjonen =. Det er også mulig å kombinere tilordningsoperasjonen med operasjonssymboler, slik som f. eks. += og -=.

x = 5
x += 2 # det samme som x = x + 2
print(x) # 7

y = 5
y + 2 # ingen tilordnings-operasjon her
print(y) # fremdeles 5

Tilordningsoperatøren kan kombineres med alle symbol-operasjonene.

x = 42

x += 2       # det samme som  x = x + 2
x -= 3 - 1   # det samme som  x = x - (3 - 1)
x //= 10     # det samme som  x = x // 10
x **= 5 // 2 # det samme som  x = x ** (5 // 2)
x *= 2 + 3   # det samme som  x = x * (2 + 3)
x %= 3       # det samme som  x = x % 3
x /= 3       # det samme som  x = x / 3
Uttrykk og setninger

Et uttrykk består av én eller flere verdier, variabler, operasjoner og funksjoner som alltid vil evaluere til en enkelt verdi. Her er noen eksempler på uttrykk (vi antar her at x og y er variabler som allerede er definert/er tilordnet en verdi).

En setning er ett steg (ofte én linje) i et python -program, og representerer først og fremst en handling og ikke en verdi. For eksempel tilordningen av en verdi til en variabel.

Variabler referer til verdier, ikke til uttrykk

Det som står på høyresiden av tilordningsoperatøren når vi tilordner verdi til en variabel er et uttrykk. Variabelen vil være en referanse til den ferdig evaluerte verdien, og vil ikke huske hvordan uttrykket så ut.

x = 5
y = x + 2
print(x) # 5
print(y) # 7

x += 10
print(x) # 15
print(y) # fremdeles 7
Gode variabelnavn

Følg disse prinsippene når du velger variabelnavn:

  1. Variabelnavnet skal være selvforklarende og beskrive sin egen rolle.
# Dårlig
s = "L"
# Bra
shirt_size = "L"
  1. Benytt kun små bokstaver. Selv om det teknisk sett er mulig å bruke store bokstaver, unngår vi det. Store bokstaver holder vi unna og bruker bare til spesielle formål, f. eks. konstanter (se under).
# Dårlig
Name = "Siri"
# Bra
name = "Siri"
  1. Benytt _ for å representere mellomrom, såkalt snake_case. Merk at du noen steder vil se lowerCamelCase som er ansett for å være god stil i en del andre programmeringsspråk. Vi godtar begge deler, men vær konsekvent.
# Tja
numberOfPeople = 42
# Offisiell python-stil
number_of_people = 42

Noen ganger oppretter vi en variabel som får en fast verdi når programmet starter, og som deretter aldri skal endre verdi. Dette er en såkalt konstant. Det er god stil å la konstanter være skrevet i UPPER_CASE.

# Dårlig
minimum_age = 12
# Bra
MINIMUM_AGE = 12

Du kan også se støte på UpperCamelCase noen steder. Det er god stil å benytte denne formen når man skal navngi såkalte «klasser»; men dette er et begrepet som er utenfor pensum i INF100, og du bør derfor ikke benytte denne formen når du navngir noe i dette kurset.

  1. Ikke benytt et innebygd nøkkelord eller funksjonsnavn fra Python som variabelnavn.

    • Nøkkelord med spesielle betydninger i Python 3 er: False None True and as assert break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield.
    • Innebygde funksjoner i Python 3 er f. eks: abs bool float input int len max min print sum str type. For uttømmende liste, se https://docs.python.org/3/library/functions.html.