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
try-except(Unntakshåndtering)
➡️ Norsk:try-exceptbrukes 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-exceptis 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.")
finally(Rengjøring etter en try-except blokk)
➡️ Norsk:finallybrukes for å sikre at en blokk kode alltid kjører, uansett om det oppstod en feil eller ikke.
➡️ Engelsk:finallyis 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.")
raise(Tvinge frem en feil)
➡️ Norsk: Du kan brukeraisetil å kaste en feil bevisst hvis en uventet situasjon oppstår i programmet ditt.
➡️ Engelsk: You can useraiseto 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)
class(Klasser og objekter)
➡️ Norsk: Enclassbrukes for å lage et objekt som kan inneholde både data (attributter) og funksjoner (metoder).
➡️ Engelsk: Aclassis 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.
- 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!
- 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
- Unittest-modulen
➡️ Norsk: Python tilbyr en innebygdunittest-modul som lar deg skrive tester for funksjoner og klasser.
➡️ Engelsk: Python provides a built-inunittestmodule 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()
assert(Sjekke at en betingelse er sann)
➡️ Norsk:assertbrukes for å sjekke at en betingelse er sann under programkjøring. Hvis betingelsen er usann, hever den enAssertionError.
➡️ Engelsk:assertis used to check that a condition is true during runtime. If the condition is false, it raises anAssertionError.
x = 10
assert x == 10, "x er ikke lik 10"
📁 Avansert Filbehandling
- Avansert 
osFilbehandling
➡️ Norsk:os-modulen gir deg tilgang til operativsystemets funksjoner, slik som å navigere i filsystemet, opprette mapper, og manipulere filer.
➡️ Engelsk: Theosmodule 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")
- 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. Thewithstatement 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
- Prosjektstruktur
➡️ Norsk: En god prosjektstruktur gjør koden enklere å vedlikeholde og forstå. En typisk Python-prosjektstruktur inkluderer mapper for kildekode, tester, og enREADME-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 aREADMEfile. 
mitt_prosjekt/
├── src/
│   └── main.py
├── tests/
│   └── test_main.py
└── README.md
- Pipenv for avhengighetsstyring
➡️ Norsk:Pipenvbrukes til å administrere pakker og avhengigheter i Python-prosjekter. Det er et kraftig verktøy som kombinerer funksjonene tilpipogvirtualenv.
➡️ Engelsk:Pipenvis used to manage packages and dependencies in Python projects. It's a powerful tool that combines the functionality ofpipandvirtualenv. 
# 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.