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.

Välj ett importsätt och tryck på Kör import.

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?

Lösningsförslag på GitHub: bok.py och main.py.

Ö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.

Tillbaka till Kapitel 4