Funktioner i Python
Att skapa och använda egna funktioner i Python är enklare än i många andra språk. Denna enkelheten kommer mycket från att vi i Python kan returnera i princip vad som helst, inte bara heltal och flyttal som är fallet i många andra språk. I andra språk måste vi ofta ta till knep som pekare för att kunna returera exempelvis strängar. Något sådant behövs inte Python, allt detta sköts i bakgrunden i Python.
En första funktion
Här visas ett komplett litet Python-program med en egen funktion. Just denna funktion returnerar inte något värde, utan skriver ut resultatet på skärmen direkt.
#!/usr/bin/env python3
def hej():
print ("Nu ska vi lära oss om funktioner i Python")
hej()
Utdatan från detta programmet när vi kör det är helt enkelt bara meningen “Nu
ska vi lära oss om funktioner i Python”. Notera att om vi inte hade anropat
funktionen hej()
på den sista raden så hade ingenting skrivits ut på
skärmen. Då hade bara funktionen definierats och sedan hade programmet
avslutats. En funktion utför bara något när vi explicit anropar den.
Det som händer är att vi först skapar en funktioner som vi definierar med
def
-kommandot. Vi anger att funktionen ska heta hej och att funktionen inte
ska ta några argument genom att inte skriva något innanför parenteserna. När vi
sedan anropar funktionen körs den indenterade koden som står under def
hej():
.
Argument?
Vi nämnde precis att vår funktion inte tar några argument, vad är då detta för något? Jo, för att en funktion verkligen ska vara användbar så ska vi ju helst kunna mata den med någon form av indata. Låt oss exempelvis anta att vi vill göra en enkel funktion för att skriva ut kvadraten på ett tal. Vi vill då ange talet till funktionen och få svaret som svar på skärmen.
#!/usr/bin/env python3
def kvadrat(tal):
print ("Kvadraten på " + str(tal) + " är: " + str(tal**2))
kvadrat(5)
Här har vi skapat ett sådant enkelt program. Nu tar vår funktion kvadrat ett
argument, nämligen variabeln tal. Vi använder sedan tal inuti funktionen för
att skriva ut vad kvadraten på tal blir med tal**2
. Två styck asterisker i
Python betyder “upphöjt till”, i detta fallet tal upphöjt till två. I vårt
program angav vi sedan 5 som argument till funktionen när vi anropade den, och
svaret vi får är 25.
Returnera istället för att skriva ut
Istället för att skriva ut resultatet på skärmen som vi gjorde precis så hade det ju faktiskt varit bättre om vi kunde spara resultatet i en ny variabel för att sedan kunna utföra nya beräkningar. Det är just detta som returvärden används för. Vi skriver nu om vår funktion för att returnera värdet istället för att bara skriva ut det. Vi vill nu inte längre ha med hela meningen “Kvadraten på…” utan bara själva talet, annars kan vi inte utföra beräkningar med resultatet.
#!/usr/bin/env python3
def kvadrat(tal):
return (tal**2)
x = kvadrat(5)
print ("Nu har vi sparat resultatet i x och x är: " + str(x))
print ("Vi kan nu utföra nya beräkningar med resultatet, t.ex.")
print ("x * 10 = " + str(x*10))
Resultatet från koden ovan blir:
Nu har vi sparat resultatet i x och x är: 25
Vi kan nu utföra nya beräkningar med resultatet, t.ex.
x * 10 = 250
Avslutning
Nu har vi faktiskt lärt oss grunderna i hur funktioner fungerar i Python! Mycket svårare än så här är det faktiskt inte.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Pythonmiljö i Docker
Ett vanligt användningsområde för Docker är att skapa och köra virtuella Pythonmiljöer. Med en Dockerfile och Docker Compose kan vi automatisera hela processen, från skapandet av miljön till exekveringen.
-
Python och trigonometri
Lite uppfräschning av trigonometri och Python är aldrig fel. Här får vi lära oss hur man kan rita upp rätvinkliga trianglar – direkt i Python – om vi känner till två av sidorna. För detta kommer vi att använda modulerna turtle och math.
-
Python i Windows utan installation
Det går att använda Python i Windows, även utan att installera det. Detta är användbart om du har en dator där du inte har rättigheter att installera program. Det kan till exempel vara en skoldator eller arbetsdator.
-
Ett primtalsprogram i C
Här ska vi få en kort introduktion till programspråket C genom att göra ett litet enkelt primtalsprogram. Program består utav tre filer. Två styck källkodsfiler och en styck header-fil. I header-filen lägger vi något som kallas för funktionsprototyper. En funktionsprototyp använder man för att tala om för programmet hur en funktion ser ut, det vill säga vilka argument funktionen tar samt vilken datatyp den returernar. Detta gör gör man för att slippa lägga funktionen överst i samma fil som
main()
. Header-filen döper vi till skrivprm.h.
Senaste nyheterna och inläggen
-
Hämta data från API:er med cURL och jq
Med cURL och jq går det att extrahera data från API:er direkt från kommandoraden. Jq är en JSON-tolkare och beskrivs av utvecklarna som sed och awk för JSON.
-
Pythonmiljö i Docker
Ett vanligt användningsområde för Docker är att skapa och köra virtuella Pythonmiljöer. Med en Dockerfile och Docker Compose kan vi automatisera hela processen, från skapandet av miljön till exekveringen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
-
Ny bok om Ansible
Till hösten släpper CyberInfo Sverige sin nya bok – Ansible från grunden. Boken riktar sig till alla som vill lära sig grunderna i Ansible. Den börjar med att sätta upp SSH-nycklar och köra enkla ad hoc-kommandon mot en värd. Därefter går vi vidare med att bygga egna playbooks och roller.
-
Det nya Docker Compose
Sedan i mitten av förra året har det gamla Python-baserade
docker-compose
-kommandot sakta ersatts av det nyare Go-baseradedocker compose
. Det nya kommandot är ett plugin till Docker istället för ett fristående kommando som tidigare.
Utvalda artiklar
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
-
Stort deltagande på årets Gubbdata
I helgen var det Gubbdata i Lund – ett av Sveriges största demoparty. På plats fanns cirka ett hundra deltagare, alla med en passion för retrodatorer.
-
Kapad identitet
I mitten av september förra året blev Kristina utsatt för ett id-kapningsförsök. Någon hade ansökt om ett lån på 250 000 kr i hennes namn. Låneansökan gick ut till ett 20-tal banker.
-
Amiga-scenen lever än
I en villa mellan Ljungskile och Stenungsund den 27 november träffades de igen, ett gäng glada Amiga-entusiaster. Man träffas för att prata, titta på demos, spela och ha allmänt trevligt.
-
Fällande dom för mannen med polismejlen
Den man som under nästan två års tid uppmärksammade polisen på att han fick polisrelaterad mejl skickad till sig dömdes idag för dataintrång till dagsböter. Domen avser den inloggning till Frontex, Europeiska gräns- och kustbevakningsbyrån, som mannen testade.
CyberInfo Sverige är ett IT- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.