Et eksempel på en mye brukt, innebygd funksjon er print(). Totalt har Python 71 innebygde funksjoner, dokumentert på referansesiden built in functions.
En funksjon er en bit Python-kode som utfører en bestemt oppgave, for eksempel sørger funksjonen print() for utskrift. Å aktivere funksjonskoden heter å kalle opp funksjonen, eller bare kalle funksjonen. Hvis vi for eksempel i koden vår skriver print("Hallo, verden!"), kaller vi (opp) funksjonen print(). Vi kan også si at vi utfører et funksjonskall.
Det er mange likheter mellom funksjoner i Python og matematiske funksjoner. Absoluttverdifunksjonen abs() tilfredsstiller for eksempel fullstendig kravet til en matematisk funksjon om å avbilde alle verdier i definisjonsmengden på en én og bare én verdi. Men kravene til en funksjon i Python er ikke så strenge, så vi kan også ha funksjoner som ikke er i henhold til den matematiske definisjonen, for eksempel print().
Argumenter
Ofte ønsker vi å gi verdier inn til en funksjon, for eksempel en streng vi vil at print() skal skrive ut. Slike verdier kalles argumenter, og vi oppgir dem i parentes bak funksjonsnavnet. Skriver vi for eksempel print("Hallo, verden!"), kaller vi opp funksjonen print() med strengen "Hallo verden!" som argument. I noen bøker og på noen nettsteder kalles argumenter for parametere, eller aktuelle parametere, men vi vil konsekvent bruke ordet argumenter.
Hvor mange argumenter en funksjon skal ha, varierer fra funksjon til funksjon, vi sier at funksjonen tar så og så mange argumenter. Noen funksjoner tar ikke argumenter i det hele tatt, noen tar ett argument, noen to, noen tre, og så videre, og noen kan ta et varierende antall argumenter. Argumentene angir vi atskilt med komma. Når vi kaller opp en funksjon uten argumenter, bruker vi tomme parenteser. Parentesene er et kjennetegn for en funksjon, og når vi refererer til navn på funksjoner, er det derfor vanlig å la navnet ledsages av et par parenteser, for eksempel print().
Et eksempel på en funksjon som tar nøyaktig ett argument er abs(), som beregner absoluttverdien til et tall, for eksempel er abs(-2) lik 2.
Et eksempel på en funksjon som kan ta ett eller ingen argumenter er float(), som konverterer til flyttall. Oppgir vi ingen argumenter, blir resultatet 0.0. For eksempel er float("3.2") lik 3.2 og float() er lik 0.0.
Et eksempel på en funksjon som tar et vilkårlig antall argumenter er print().
Oppgir vi uriktig antall argumenter, gir Python en feilmelding.
Eksperimenter med å gi for få og for mange argumenter til abs() og float(), og studer feilmeldingene du får.
Det finnes ikke løsningsforslag til denne oppgaven.
Vi bruker ikke blanke tegn mellom argumenter og parenteser. Vi skriver altså for eksempel print(x), ikke print( x ). Derimot bruker vi blanke tegn etter komma som skiller argumentene. Vi skriver altså for eksempel print(x, y, z), ikke print(x,y,z). Dette har ingen betydning for virkemåten, men er i henhold til anbefalingene i stilguiden PEP 8.
Returverdier
Ofte får vi ut en verdi av en funksjon, vi sier at funksjonen har en returverdi, eller at den returnerer en verdi. For eksempel returnerer abs() absoluttverdien til argumentet.
Eksempel 1:
Når vi kjører Python-koden under, kalles funksjonen abs() med verdien til variabelen y som argument. Returverdien tilordnes variabelen x. Hvis for eksempel y = −3.2, blir x = 3.2.
x = abs(y)
Funksjoner som ikke returnerer noen bestemt verdi, returnerer None. None er ikke en streng, men et kodeord i Python. print() er et eksempel på en funksjon som returnerer None.
For å finne ut nøyaktig hva en innebygd funksjon gjør, hvor mange argumenter den tar, og hva den returnerer, kan vi studere dokumentasjonen på referansesiden built in functions. Alternativt kan vi bruke funksjonen help() i Python, for eksempel skrive help(abs) for å få informasjon om funksjonen abs(). Dokumentasjonen på referansesiden er imidlertid ofte enklere å tolke.
Sette sammen funksjonskall
Vi kan gjerne sette sammen flere funksjonskall i samme kodelinje.
Eksempel 2:
Vi skal konvertere strengen "-2.3" til flyttall ved hjelp av funksjonen float(), og så beregne absoluttverdien til dette tallet ved hjelp av abs(). Det kan vi gjøre ved hjelp av to kodelinjer:
x = float("-2.3")
y = abs(x)
Her lagrer vi i første linje returverdien fra float() i variabelen x, og i andre linje bruker vi så verdien til x som et argument til abs(). Men vi kan også godt droppe mellomlagringen og sende returverdien fra float() direkte inn som et argument til abs():
y = abs(float("-2.3"))
Det finnes ingen fasit på hvilken av de to variantene i eksempel 2 som er best. Den første er mer oversiktlig, mens den andre er mer kompakt. Generelt bør vi prioritere oversiktlighet, men allikevel er ikke den andre varianten mer kompakt enn at den er helt i orden å bruke. Vi kan teoretisk kombinere så mange funksjonskall vi vil i samme kodelinje, men det blir fort uoversiktlig.
Koden under bruker 3 kodelinjer på å konvertere to strenger til flyttall, og så finne det største av de to tallene ved hjelp av den innebygde funksjonen max(). Skriv om koden slik at alt utføres i én enkelt kodelinje.
x = float("2.35")
y = float("2.36")
z = max(x, y)
Funksjoner i moduler
Pythons innebygde funksjoner er ganske få, vi finner for eksempel ikke vanlige matematiske funksjoner som sin(), cos() og sqrt() blant dem. Grunnen er at mange funksjoner er tematisk organisert i egne moduler, som vi kan importere til koden vår ved behov. For eksempel kan vi importere modulen math ved å skrive import math, og får da blant annet tilgjengelig funksjonene math.sin(), math.cos() og math.sqrt().
Kilder
-
- Matthes A. (2019). Python Crash Course. no starch press