PythonPodcast 51 - itnett/FTD02H-N GitHub Wiki

Python Symboler og Konsepter forklart i detalj – Del 6 🌟

Velkommen til del 6 av vår serie der vi dykker dypt inn i Python-symboler, avanserte funksjoner, og hvordan du kan bruke dem effektivt i dine programmer. I denne delen vil vi diskutere mer om datastrukturer, testing og feilhåndtering, og fokusere på viktige emner som objektorientert programmering og filbehandling.


🛠️ Symboler og konsepter i Python – Del 6

  1. try-except (Unntakshåndtering)
    ➡️ Norsk: try-except brukes for å fange opp feil og unngå at programmet krasjer. Dette er spesielt nyttig når du jobber med filer, nettverksforespørsler eller API-kall.
    ➡️ Engelsk: try-except is used to catch errors and prevent the program from crashing. This is especially useful when working with files, network requests, or API calls.
try:
    fil = open('fil_som_ikke_finnes.txt')
except FileNotFoundError:
    print("Filen ble ikke funnet.")
  1. finally (Rengjøring etter en try-except blokk)
    ➡️ Norsk: finally brukes for å sikre at en blokk kode alltid kjører, uansett om det oppstod en feil eller ikke.
    ➡️ Engelsk: finally is used to ensure that a block of code always runs, regardless of whether an error occurred or not.
try:
    fil = open('fil.txt')
except FileNotFoundError:
    print("Filen ble ikke funnet.")
finally:
    print("Denne linjen kjører alltid.")
  1. raise (Tvinge frem en feil)
    ➡️ Norsk: Du kan bruke raise til å kaste en feil bevisst hvis en uventet situasjon oppstår i programmet ditt.
    ➡️ Engelsk: You can use raise to deliberately throw an error if an unexpected situation arises in your program.
alder = -1
if alder < 0:
    raise ValueError("Alder kan ikke være negativ!")

📦 Datastrukturer og OOP (Objektorientert Programmering)

  1. class (Klasser og objekter)
    ➡️ Norsk: En class brukes for å lage et objekt som kan inneholde både data (attributter) og funksjoner (metoder).
    ➡️ Engelsk: A class is used to create an object that can contain both data (attributes) and functions (methods).
class Bil:
    def __init__(self, merke, modell):
        self.merke = merke
        self.modell = modell

    def kjør(self):
        print(f"{self.merke} {self.modell} kjører.")

min_bil = Bil("Tesla", "Model S")
min_bil.kjør()  # Output: Tesla Model S kjører.
  1. Attributter og Metoder
    ➡️ Norsk: Attributter er variabler inne i en klasse, mens metoder er funksjoner som kan kalles på klasseobjekter.
    ➡️ Engelsk: Attributes are variables inside a class, while methods are functions that can be called on class objects.
class Hund:
    def __init__(self, navn, alder):
        self.navn = navn
        self.alder = alder

    def sitt(self):
        print(f"{self.navn} sitter!")

rex = Hund("Rex", 4)
rex.sitt()  # Output: Rex sitter!
  1. Arv (Inheritance)
    ➡️ Norsk: Arv tillater en klasse å arve funksjoner og attributter fra en annen klasse. Dette gjør det mulig å gjenbruke kode.
    ➡️ Engelsk: Inheritance allows a class to inherit functions and attributes from another class. This enables code reuse.
class Dyr:
    def __init__(self, navn):
        self.navn = navn

    def si_hei(self):
        print(f"{self.navn} sier hei!")

class Hund(Dyr):
    def sitt(self):
        print(f"{self.navn} sitter!")

rex = Hund("Rex")
rex.si_hei()  # Output: Rex sier hei!
rex.sitt()  # Output: Rex sitter!

🧪 Testing og Feilhåndtering

  1. Unittest-modulen
    ➡️ Norsk: Python tilbyr en innebygd unittest-modul som lar deg skrive tester for funksjoner og klasser.
    ➡️ Engelsk: Python provides a built-in unittest module that allows you to write tests for functions and classes.
import unittest

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

class TestLeggTil(unittest.TestCase):
    def test_sum(self):
        self.assertEqual(legg_til(2, 3), 5)

if __name__ == '__main__':
    unittest.main()
  1. assert (Sjekke at en betingelse er sann)
    ➡️ Norsk: assert brukes for å sjekke at en betingelse er sann under programkjøring. Hvis betingelsen er usann, hever den en AssertionError.
    ➡️ Engelsk: assert is used to check that a condition is true during runtime. If the condition is false, it raises an AssertionError.
x = 10
assert x == 10, "x er ikke lik 10"

📁 Avansert Filbehandling

  1. Avansert os Filbehandling
    ➡️ Norsk: os-modulen gir deg tilgang til operativsystemets funksjoner, slik som å navigere i filsystemet, opprette mapper, og manipulere filer.
    ➡️ Engelsk: The os module provides access to operating system features, such as navigating the filesystem, creating directories, and manipulating files.
import os

# Opprette en ny mappe
os.makedirs("ny_mappe")

# Endre nåværende arbeidskatalog
os.chdir("ny_mappe")

# Fjerne en fil
os.remove("fil.txt")
  1. Filbehandling med with
    ➡️ Norsk: Når du jobber med filer, er det viktig å lukke dem etter bruk. with-setningen sikrer at filen automatisk blir lukket etter at blokken er fullført.
    ➡️ Engelsk: When working with files, it's important to close them after use. The with statement ensures that the file is automatically closed after the block is completed.
with open("fil.txt", "r") as fil:
    innhold = fil.read()
    print(innhold)

🔍 Jobbe med Større Prosjekter

  1. Prosjektstruktur
    ➡️ Norsk: En god prosjektstruktur gjør koden enklere å vedlikeholde og forstå. En typisk Python-prosjektstruktur inkluderer mapper for kildekode, tester, og en README-fil.
    ➡️ Engelsk: A good project structure makes code easier to maintain and understand. A typical Python project structure includes directories for source code, tests, and a README file.
mitt_prosjekt/
├── src/
│   └── main.py
├── tests/
│   └── test_main.py
└── README.md
  1. Pipenv for avhengighetsstyring
    ➡️ Norsk: Pipenv brukes til å administrere pakker og avhengigheter i Python-prosjekter. Det er et kraftig verktøy som kombinerer funksjonene til pip og virtualenv.
    ➡️ Engelsk: Pipenv is used to manage packages and dependencies in Python projects. It's a powerful tool that combines the functionality of pip and virtualenv.
# Installere en pakke med pipenv
pipenv install requests

# Kjør Python-koden din inne i pipenv-miljøet
pipenv run python main.py

🎯 Oppsummering Del 6:
I denne delen har vi tatt et dypdykk i datastrukturer, OOP, feilhåndtering og testing. Vi har også gått gjennom hvordan du kan bruke avansert filbehandling og organisere større prosjekter med riktig prosjektstruktur og verktøy for avhengighetsstyring.


🚀 Neste steg: Fortsettelsen vil dekke avanserte algoritmer, GUI-programmering, og til og med sikkerhetstiltak for Python-applikasjoner!