PythonPodcast 44 - itnett/FTD02H-N GitHub Wiki

Python Mentorkurs – Episode 9: Moduler, Pakkestrukturer og Arbeid med Større Prosjekter

Mentor: "Velkommen tilbake! I forrige episode lærte vi om testing og feilsøking, som er viktige verktøy for å sikre at koden vår fungerer som den skal. I dag skal vi ta for oss et like viktig tema – hvordan du kan organisere og strukturere koden din på en effektiv måte ved hjelp av moduler og pakker. Dette blir spesielt viktig når du jobber med større prosjekter. La oss dykke inn i hvordan vi kan bryte ned koden i mindre, gjenbrukbare enheter."


Hva er en Modul i Python?

Mentor: "En modul i Python er ganske enkelt en fil som inneholder Python-kode. Du kan ha funksjoner, klasser og variabler i modulen, og du kan importere dem til andre filer. Dette lar deg organisere koden din i mindre, gjenbrukbare biter. La oss se på et enkelt eksempel."

Eksempel på en Modul (filnavn: min_modul.py)

def si_hei(): print("Hei fra modulen!")

def legg_til(a, b): return a + b

Mentor: "Her har vi definert to funksjoner i en modul kalt min_modul.py. Disse funksjonene kan nå importeres og brukes i andre Python-filer."


Hvordan Importere Moduler

Mentor: "For å bruke en modul, kan du importere den ved hjelp av import-setningen. La oss se på hvordan vi kan bruke modulen vi nettopp laget."

Eksempel på Import (filnavn: bruk_modul.py)

import min_modul

min_modul.si_hei() # Skriver ut: Hei fra modulen! resultat = min_modul.legg_til(3, 5) print(f"Resultatet er: {resultat}")

Mentor: "Her importerer vi min_modul og bruker begge funksjonene vi definerte i modulen. Dette gjør koden vår mer organisert, og vi kan enkelt gjenbruke funksjonene i flere filer."


Pakkestrukturer i Python

Mentor: "Når du jobber med større prosjekter, vil du kanskje organisere modulene dine i pakker. En pakke er en mappe som inneholder flere moduler, og som også kan inneholde andre pakker (undermapper). For å gjøre en mappe til en pakke, legger du til en spesiell fil kalt init.py. Denne filen kan være tom, men den indikerer for Python at mappen er en pakke."

Eksempel på Pakkestruktur

prosjekt/ ├── init.py ├── min_modul.py └── matematikk/ ├── init.py └── operasjoner.py

Mentor: "Her har vi en prosjektmappe med en underpakke kalt matematikk, som inneholder en fil operasjoner.py. Du kan importere moduler fra pakker på samme måte som du importerer fra enkeltfiler."


Importere fra en Pakke

Eksempel på Import fra Pakke

from matematikk.operasjoner import legg_til

resultat = legg_til(2, 3) print(f"Resultatet er: {resultat}")

Mentor: "Her importerer vi legg_til-funksjonen fra operasjoner.py i matematikk-pakken. Ved å strukturere koden på denne måten blir det mye enklere å organisere store prosjekter."


Fordeler med Moduler og Pakker

Mentor: "Det er mange fordeler med å bruke moduler og pakker i Python:

  1. Gjenbrukbar kode: Funksjoner og klasser i en modul kan enkelt gjenbrukes på tvers av flere filer og prosjekter.

  2. Bedre organisasjon: Koden din blir mer organisert og lettere å navigere i når den er delt opp i moduler og pakker.

  3. Vedlikehold: Ved å bryte ned koden i mindre enheter er det lettere å vedlikeholde og oppdatere deler av koden uten å påvirke resten.

  4. Namespace-isolasjon: Hver modul har sitt eget "namespace", som betyr at variabler og funksjoner fra ulike moduler ikke vil kollidere med hverandre."


Opprette og Publisere Egne Pakker

Mentor: "Hvis du lager en pakke som du tror andre kan ha nytte av, kan du publisere den på Python Package Index (PyPI), som er et bibliotek for Python-pakker. Dette gjør det enkelt for andre å installere pakken din med pip."

Eksempel på Publisering av en Pakke

pip install twine python setup.py sdist twine upload dist/*

Mentor: "Her bruker vi verktøyet twine for å laste opp pakken vår til PyPI. Dette gjør det mulig for andre å installere pakken vår ved hjelp av pip install. Det er slik mange populære biblioteker i Python blir delt med fellesskapet."


Moduler med if name == 'main'

Mentor: "Noen ganger ønsker du å teste en modul ved å kjøre den direkte som et skript, men du vil ikke at denne koden skal kjøres hvis modulen blir importert et annet sted. Dette er hvor if name == 'main' kommer inn."

Eksempel med if name == 'main'

def si_hei(): print("Hei fra modulen!")

if name == "main": si_hei() # Denne koden kjører bare hvis modulen kjøres direkte

Mentor: "Når vi kjører modulen direkte, vil si_hei() bli kalt, men hvis modulen blir importert i en annen fil, vil denne delen av koden ikke kjøre. Dette er nyttig for å teste moduler uten å påvirke andre deler av programmet."


Refaktorering av Store Prosjekter

Mentor: "Når et prosjekt vokser, kan det være lurt å refaktorere (omorganisere) koden for å gjøre den mer lesbar og lettere å vedlikeholde. Dette innebærer ofte å bryte opp lange filer i mindre moduler og flytte beslektet funksjonalitet inn i pakker."


Oppsummering

Mentor: "I dag har vi lært hvordan vi kan bruke moduler og pakker for å organisere koden vår bedre. Vi har sett på hvordan du importerer funksjoner fra moduler, hvordan du organiserer kode i pakker, og hvordan du bruker if name == 'main' for å teste moduler. Disse verktøyene hjelper oss med å håndtere store prosjekter på en mer effektiv måte."


Praktisk Oppgave: Lag Et Komplett System med Moduler

Mentor: "Her er en oppgave for deg: Lag et enkelt bibliotekssystem der du har moduler for å legge til bøker, låne bøker, og vise tilgjengelige bøker. Organiser funksjonene i separate moduler og pakker, og bruk if name == 'main' for å teste systemet."


Mentor: "I neste episode skal vi se på filbehandling og hvordan vi kan bruke filer til å lagre og hente data i våre programmer. Øv deg på å jobbe med moduler og pakker til da, og vi sees snart!"


Denne episoden fokuserer på hvordan du kan strukturere og organisere koden din ved hjelp av moduler og pakker i Python. Gjennom praktiske eksempler og oppgaver lærer deltageren hvordan de kan dele opp kode i mindre, gjenbrukbare enheter som gjør det enklere å vedlikeholde og utvikle større prosjekter over tid.