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-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.")
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.")
raise
(Tvinge frem en feil)
➡️ Norsk: Du kan brukeraise
til å kaste en feil bevisst hvis en uventet situasjon oppstår i programmet ditt.
➡️ Engelsk: You can useraise
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)
class
(Klasser og objekter)
➡️ Norsk: Enclass
brukes for å lage et objekt som kan inneholde både data (attributter) og funksjoner (metoder).
➡️ Engelsk: Aclass
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.
- 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-inunittest
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()
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 enAssertionError
.
➡️ Engelsk:assert
is 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
os
Filbehandling
➡️ Norsk:os
-modulen gir deg tilgang til operativsystemets funksjoner, slik som å navigere i filsystemet, opprette mapper, og manipulere filer.
➡️ Engelsk: Theos
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")
- 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. Thewith
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
- 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 aREADME
file.
mitt_prosjekt/
├── src/
│ └── main.py
├── tests/
│ └── test_main.py
└── README.md
- Pipenv for avhengighetsstyring
➡️ Norsk:Pipenv
brukes til å administrere pakker og avhengigheter i Python-prosjekter. Det er et kraftig verktøy som kombinerer funksjonene tilpip
ogvirtualenv
.
➡️ Engelsk:Pipenv
is used to manage packages and dependencies in Python projects. It's a powerful tool that combines the functionality ofpip
andvirtualenv
.
# 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.