Funktioner och moduler
Hur fungerar en funktion
Ni kan läsa mer om att arbeta med Python och funktioner i kursboken Learning Python, kapitel 16.
Funktioner används för att dela in ett större problem (ofta ett program) i mindre delproblem. Alternativt använder man funktioner för att kunna återanvända en tidigare lösning. Ni har redan använt er av en del funktioner i tidigare övningsuppgifter.
Wikipedia beskriver en funktion som:
Ordet funktion syftar inom matematiken ofta på en regel som innebär att till ett invärde associeras ett utvärde, ofta beräknat med en matematisk formel. En mycket viktig egenskap hos funktioner är att de är deterministiska (det vill säga konsekventa, så att varje invärde alltid ger samma utvärde). Detta gör att funktionen kan ses som en mekanism, en maskin, som systematiskt levererar rätt utvärde så fort man stoppar in ett invärde. I tekniska sammanhang brukar invärdet kallas 'argument' och utvärdet för 'värdet'.
Både print och input är funktioner som ingår i grundbiblioteket för Python. Tanken med en funktion är att bryta ut en del av problemet och lösa det på ett så pass generellt sätt att ni kan använda er av funktionen i flera delar av programmet. En funktion kan även acceptera ett antal argument som används av funktionen för att komma fram till ett resultat.
Vi kommer senare i kursen gå igenom hur man skriver sina egna funktioner för att utöka språket och bryta ner problem i mindre delar.
Moduler
Ni kan läsa mer om att arbeta med Python och moduler i kursboken Learning Python, kapitel 21 & 22. En av Pythons stora styrkor kommer från det faktum att Python levereras "med batterier inkluderade". Det finns ett stort bibliotek med moduler som kan importeras till er kod. Till exempel modulen os som innehåller funktioner för att interagera med operativsystemet.
För att importera en modul till Python använder ni er av kommandot import. import fungerar så att det importerar och evaluerar den fil ni anger såvida den inte redan blivit importerad tidigare. Ifall ni vill importera en modul på nytt måste ni använda er av funktionen reload från modulen imp. Notera att reload inte kan användas såvida modulen inte tidigare blivit importerad.
Prova följande:
>>> import os
>>> import os
>>> import imp
>>> imp.reload(os)
För att få mer information om vilka funktioner som finns i en modul kan ni använda er av funktionen dir. Vill ni veta mer om hur en modul eller funktion fungerar och få mer information om vilka parametrar ni måste ange och vilket resultat ni kan förvänta er kan ni använda er av funktionen help. Använd help och dir flitigt genom laborationerna när ni stöter på nya koncept för att lära er mer om dessa.
Prova följande:
>>> dir(os)
>>> help(os.system)
En modul som kan vara trevlig att känna till på en gång är modulen math. Om vi t.ex. vill kunna dra roten ur tal så behöver vi ha med den. Då skriver vi på följande sätt:
import math
x = math.sqrt(64)
Man kan även skriva:
from math import sqrt
x = sqrt(64)
Då slipper man ha med "math" hela tiden. Vill man ta in allt som finns i modulen kan man skriva:
from math import *
x = ceil(3.8)
(ceil är en funktion som avrundar ett tal uppåt). Här bör man dock vara lite försiktig, nu kanske vi fick tillgång till saker som vi inte behövde...
Moduler finns också dokumenterade online, men det kan vara bra att lära sig läsa dokumentationen i terminalen eftersom det är ett vanligt sätt att läsa dokumentation på unix-system.
Python
Emacs
Laborationer och material
Sidansvarig: Pontus Haglund
Senast uppdaterad: 2024-08-14