Programmering nivå 2
Kap 3.7 – Egna moduler och import
Dela upp kod i flera filer och använd moduler.
Mål med lektionen
När du har arbetat klart med denna lektion ska du:
- Förstå vad en modul är i Python.
- Kunna skapa egna Python-filer med funktioner och klasser.
- Kunna importera och använda moduler i olika program.
- Dela upp kod i flera filer för bättre struktur.
Så här lär du dig bäst
Börja med ett litet program du redan skrivit. Flytta några funktioner till en egen .py-fil och testa att importera dem i huvudfilen. Lägg gärna till nya funktioner för att experimentera. Undvik att kopiera hela program - tänk på modulens syfte: återanvändbara delar.
Centrala begrepp
- modul – En fil i Python (slutar på .py) som innehåller funktioner, klasser eller variabler.
- import – Används för att hämta funktionalitet från andra filer.
- modulstruktur – Att dela upp ett program i flera logiska delar.
Innehåll och exempel
Hur hänger filerna ihop?
En modul är en vanlig Python-fil som innehåller kod du vill kunna återanvända. Om filen heter
verktyg.py blir modulens namn verktyg. En annan fil, till exempel
main.py, kan importera modulen och använda funktionerna därifrån.
projekt/
├── main.py
└── verktyg.py
Det viktiga är att filerna ligger så att Python kan hitta modulen. I de första exemplen ligger
main.py och verktyg.py i samma mapp.
Skapa en modul: verktyg.py
def hälsa(namn):
print(f"Hej, {namn}!")
def kvadrat(tal):
return tal * tal
Använda modulen: main.py
import verktyg
verktyg.hälsa("Ella")
print(verktyg.kvadrat(5))
När du skriver import verktyg importeras hela modulen. Då behöver du skriva modulnamnet
före funktionen, till exempel verktyg.hälsa("Ella"). Det gör det tydligt var funktionen
kommer ifrån.
Importera bara det du behöver
from verktyg import hälsa
hälsa("Leo")
Med from verktyg import hälsa importeras bara funktionen hälsa. Då kan du
anropa den direkt, utan verktyg. framför.
Byta namn med alias
import verktyg as v
v.hälsa("Tove")
Alias används när du vill ge modulen ett kortare namn i den aktuella filen. Här betyder
v samma sak som verktyg.
Interaktiv övning: importera en egen modul
Välj importsätt och kör exemplet. Jämför hur anropet ändras beroende på om hela modulen, en funktion eller ett alias importeras.
Programmering 2-koppling: moduler gör att funktioner kan ligga i en egen fil och återanvändas från flera huvudprogram.
Öva själv
Övning 1: Importera en hel modul
Skapa verktyg.py med funktionerna halsa(namn) och
dubbla(tal). Skapa main.py, importera hela modulen med
import verktyg och anropa båda funktionerna med modulnamnet.
Fundera: Varför skrivs verktyg. före
funktionsnamnet?
Lösningsförslag på GitHub: verktyg.py och main.py.
Övning 2: Importera en funktion
Skapa berakningar.py med funktionerna summa(a, b) och
produkt(a, b). Importera bara summa till main.py med
from berakningar import summa och skriv ut resultatet av två anrop.
Fundera: Behöver du skriva modulnamnet när funktionen har importerats direkt?
Lösningsförslag på GitHub: berakningar.py och main.py.
Övning 3: Använd ett alias
Skapa temperatur.py med funktionen celsius_till_fahrenheit(celsius).
Importera modulen som temp och använd aliaset när funktionen anropas i
main.py.
Fundera: Ändrar aliaset modulens riktiga filnamn?
Lösningsförslag på GitHub: temperatur.py och main.py.
Övning 4: Flytta en klass till en modul
Skapa bok.py med klassen Book, attributen title och
author samt metoden print_info(). Importera klassen till
main.py, skapa två objekt och anropa metoden.
Fundera: Vilken fil ansvarar för klassens definition och vilken fil startar programmet?
Övning 5: Dela upp ett stridsspel
Svårare övning: Här delar du ansvar mellan tre moduler och kombinerar klasser, funktioner och import.
Skapa spelare.py med klassen Player, strid.py med
funktionerna attack() och print_result() samt main.py som
importerar delarna, skapar två spelare och genomför en strid.
Fundera: Varför hör attacklogiken hemma i en annan fil än programmets startkod?
Lösningsförslag på GitHub: spelare.py, strid.py och main.py.
Övning 6: Webbutik i tre moduler
Svårare övning: Här bygger du ett litet flerfilsprogram med två klassmoduler och ett huvudprogram.
Skapa produkt.py med klassen Product och kundvagn.py med
klassen Cart. Kundvagnen ska kunna lägga till produktobjekt, visa dem och beräkna
totalpriset. Skapa main.py som importerar båda klasserna och testar programmet med
minst tre produkter.
Fundera: Vilka beroenden finns mellan de tre filerna?
Lösningsförslag på GitHub: produkt.py, kundvagn.py och main.py.
Varför moduler?
- Koden blir lättare att förstå och testa.
- Du slipper duplicera kod i flera filer.
- Du kan återanvända funktioner i flera projekt.
Sammanfattning
- En modul är en egen .py-fil som kan importeras till andra program.
- Du kan importera hela moduler eller specifika delar.
- Moduler hjälper dig att hålla din kod organiserad och återanvändbar.