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.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
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
-
Skapa fristående binärer av Python-skript
Docker har blivit det nya sättet att paketera och köra Python-skript, även när skripten körs från exempelvis ett cronjob. Men ibland behöver vi inte en hel Docker-miljö med den overhead det innebär för väldigt små skript. Då är det smidigare att göra om skriptet till en körbar binärfil. Då kan vi även enkelt flytta filen mellan olika Linuxsystem.
-
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.
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
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.
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.