Variabler og uttrykk
- Variabler
- Tilordning
- Uttrykk og setninger
- Variabler refererer til verdier, ikke til uttrykk
- Variabelnavn
Variabler
En variabel er en referanse til en verdi. En variabel kan tilordnes verdi med symbolet =
. Variabelen vil deretter referere til denne verdien frem til den eventuelt tilordnes en ny verdi.
# Vi tilordner verdien 5 til variabelen x
x = 5
print(x) # 5
print(x + 2) # 7
print(x) # fremdeles 5
Til forskjell fra matematikk slik vi vanligvis kjenner den, kan en variabel i Python endre verdi over tid.
y = 10 # y refererer nå til 10
y = 20 # y refererer nå til 20, forrige verdi (10) er helt glemt
print(y) # 20
print(y) # fremdeles 20
# Når en variabel angis, evalueres uttrykket på høyre side først; deretter
# tilordnes resultatet til variabelen angitt på venstre side
y = y + 1 # y refererer nå til 21, forrige verdi (20) er helt glemt
print(y) # 21
Legg merke til at uttrykket
y = y + 1
er en fullstending meningsfull setning å skrive i Python, mens det ville vært en selvmotsigelse å skrive det samme i matematikk. I Python skal setningen tolkes slik: «regn ut y + 1, og deretter angi denne verdien til y.»
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
Når man tilordner en verdi, må venstre side av tilordningsoperatøren være variabelnavn.
x = 5 # OK
5 = x # Feil (venstre side kan ikke være en verdi)
x + 2 = 7 # Feil (venstre side er kan ikke være et uttrykk)
Det er mulig å tilordne flere variabler verdi på samme linje.
x = y = z = 5 # alle tre variablene x, y og z refererer nå til verdien 5
print(x, y, z) # 5 5 5
a, b = 2, 3 # a refererer nå til verdien 2, b refererer nå til verdien 3
print(a, b) # 2 3
Ikke pensum, men kjekt å vite: fra og med python 3.8 er det også mulig å tilordne en variabel verdi i et uttrykk med bruk av :=
(«hvalross»-operatøren).
x = 37 + (y := 3 + 2)
print(x, y) # 42 5
Uttrykk og setninger
Et uttrykk er et «regnestykke» som kan evalueres til en verdi. Det består av én eller flere verdier, variabler, operasjoner og funksjoner. Her er noen eksempler på uttrykk; både svært banale uttrykk og mer komplekse (vi antar at x, y og num_students er variabelnavn som allrede er tilordnet verdier).
Eksempler:
42
'Hei verden'
(enkelstående verdier er de enkleste uttrykkene)x
y
(variabelnavn er uttrykk som evaluerer til sin angitte verdi)len(x)
min(2, y)
(funksjonskall er uttrykk)f'Det er {y} grader ute'
(f-strenger er uttrykk)3 + 2
y > 5
(uttrykk kan kombineres med operatorer)(len(x) > 5) and (y < 10)
y + min(0, max(len(x) - y, 100 - y))
En setning er ett steg (ofte én linje) i et Python -program, og representerer en handling og ikke en verdi. For eksempel tilordningen av en verdi til en variabel.
- En linje
x = x + 1
er en setning, mensx + 1
er et uttrykk. - En linje
print('Hallo')
er en setning, men om vi ser på kun'Hallo'
i den samme linjen er det et uttrykk.
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
Variabelnavn
Vi bestemmer selv hva variablene skal hete, så lenge de begynner med en bokstav og ikke inneholder spesielle tegn (bortsett fra _
).
num_students = 800
num_group_leaders = 42
course_code = 'INF100'
99problems = True # Krasjer, variabelnavn kan forresten ikke begynne med tall
Det er viktig å gi variablene våre navn som tydelig beskriver hva slags verdi de representerer (gjerne inkludert hvilken enhet det er). Dette gjør det enklere å lese og forstå koden. Gode variabelnavn gjør at koden vår blir selvdokumenterende.
INF100 sin stilguide for variabelnavn:
- Bruk selvdokumenterende variabelnavn.
- Bruk engelske variabelnavn.
- Bruk snake_case: bare små bokstaver, understrek (_) for å skille mellom ord.
- Ikke benytt variabelnavn som er opptatt fra før av i Python.
- Bruk selvdokumenterende variabelnavn. Dette er det viktigste punktet ved valg av variabelnavn.
|
|
- Bruk engelske variabelnavn. I og med at Python er basert på engelske nøkkelord, er koden ofte lettere å lese ved å benytte engelske variabelnavn. Dessuten gjør det koden mer tilgjengelig for kolleger som kanskje ikke forstår norsk. Til sist er de også lurt å unngå spesielle symoboler som æ, ø og å i variabelnavn; hvorfor kan du lese mer om når vi kommer til unicode og tekstkoding senere i emnet. Selv om vi anbefaler engelske variabelnavn, godtar vi også variabelnavn på norsk; men vær konsekvent.
|
|
- Bruk små bokstaver og bruk understrek (
_
) for å skille mellom ord, såkaltsnake_case
. Merk at du i noen eksterne pakker kanskje vil se andre konvensjoner, somlowerCamelCase
(ansett for å være god stil i en noen andre programmeringsspråk). I INF100 holder vi oss derimot tilsnake_case
for variabelnavn vi døper selv, slik den offisielle dokumentasjonen for Python anbefaler.
|
|
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
.
|
|
Du kan også støte på
PascalCase
noen steder, for eksempel i eksterne pakker. Det er god stil å benytte denne navneformen når man skal navngi såkalte «klasser»; men dette er utenfor pensum i INF100, og du bør derfor ikke benytte denne formen når du navngir noe i dette kurset.
- Ikke benytt et innebygd nøkkelord eller funksjonsnavn fra Python som variabelnavn.
De mest vanlige tabbene er å bruke input
, len
, sum
, abs
, min
eller max
som variabelnavn. Du kan se at disse ordene er spesielle fordi VSCode fargelegger dem annerledes enn andre variabelnavn. Dette er fordi de er reservert for spesielle formål i Python, og det er derfor en dårlig idé å bruke dem til andre ting.
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.