PythonPodcast 20 - itnett/FTD02H-N GitHub Wiki
Python Maraton Spesial: 100 Python Begreper på 100 Minutter 🎙️
Introduksjon: Velkommen til vår Python Spesial Maraton! I denne episoden skal vi dekke 100 Python-begreper på 100 minutter, og alt dette uten å dykke for dypt inn i kodeskriving. Vi kommer til å bryte ned hver enkelt av de mest viktige konseptene i Python på en enkel, forståelig og praktisk måte. Klar til å starte?
1-10: Grunnleggende konsepter
- Variabler: En variabel er som en boks der du kan lagre data (tall, tekst osv.). Du kan gi boksen et navn og endre innholdet etter behov.
Eksempel: navn = "Ola"
- Datatyper: Python støtter ulike typer data, som heltall (int), desimaltall (float), tekst (str), lister, og mer.
Eksempel: 3, "tekst", [1, 2, 3]
- Strenger: En streng er en sekvens av tegn, vanligvis brukt til tekst.
Eksempel: "Hei, verden!"
- Heltall (int): Hele tall uten desimaler.
Eksempel: 5, -12
- Flyttall (float): Tall med desimaler.
Eksempel: 3.14, -0.01
- Boolean: Representerer enten sant (True) eller usant (False).
Eksempel: True, False
- Lister: En liste er en samling av flere elementer i en bestemt rekkefølge.
Eksempel: [1, 2, 3, "Hei"]
- Indeksering: Du kan hente ut bestemte elementer i en liste eller streng ved å bruke indeksering. Python teller fra 0.
Eksempel: "Hei"[0] gir H
- Skjermutskrift (print): print() brukes til å vise informasjon på skjermen.
Eksempel: print("Hei, verden!")
- Input: Du kan hente input fra brukeren med input().
Eksempel: navn = input("Hva heter du?")
11-20: Kontrollstrukturer
- If-setninger: Beslutningsstruktur som kjører kode basert på en betingelse.
Eksempel: if x > 0: print("Positiv")
- Else: Hvis betingelsen i en if-setning ikke er oppfylt, kan vi bruke else til å kjøre alternativ kode.
Eksempel: else: print("Negativ")
- Elif: Brukes for å teste flere betingelser.
Eksempel: elif x == 0: print("Null")
- While-løkker: Gjenta kode så lenge en betingelse er sann.
Eksempel: while x < 5: print(x); x += 1
- For-løkker: Iterer over elementer i en liste eller rekke.
Eksempel: for i in range(5): print(i)
- Break: Avslutter en løkke før den er ferdig.
Eksempel: if x == 3: break
- Continue: Hopp over resten av koden i løkken og start på nytt.
Eksempel: if x == 2: continue
- Range: Brukes ofte i for-løkker for å generere tallsekvenser.
Eksempel: range(10) gir tallene 0 til 9.
- Nested Løkker: Løkker inni løkker.
Eksempel: En for-løkke inni en annen for-løkke.
- Pass: En plassholder som gjør ingenting, men tillater at strukturen er gyldig.
Eksempel: if x < 0: pass
21-30: Funksjoner
- Funksjoner: Blokker av kode som kan gjenbrukes. Defineres med def.
Eksempel: def hei(): print("Hei!")
- Argumenter: Funksjoner kan ta inn data som argumenter.
Eksempel: def hei(navn): print("Hei", navn)
- Return: Brukes for å returnere verdier fra en funksjon.
Eksempel: return x + y
- Globale variabler: Variabler som er tilgjengelige i hele programmet.
Eksempel: global x
- Lokale variabler: Variabler som kun eksisterer inne i en funksjon.
Eksempel: x = 5 inne i en funksjon er lokal.
- Lambda-funksjoner: Enkle, anonyme funksjoner.
Eksempel: lambda x: x * 2
- Docstrings: Dokumentasjonsstrenger som beskriver funksjoner.
Eksempel: """Dette er en funksjon"""
- Rekursjon: Funksjoner som kaller seg selv.
Eksempel: Faktorielle funksjoner er et godt eksempel.
- Moduler: Funksjoner og variabler kan importeres fra andre filer.
Eksempel: import math
- Import: Henter eksterne moduler eller bibliotek.
Eksempel: import random
31-40: Datastrukturer
- Tuples: Som lister, men de er uforanderlige (kan ikke endres etter opprettelse).
Eksempel: (1, 2, 3)
- Set: En samling unike elementer uten duplikater.
Eksempel: {"a", "b", "c"}
- Dictionary: Samling av nøkkel-verdi-par.
Eksempel: {"navn": "Ola", "alder": 30}
- Key: En unik nøkkel i en ordbok som peker på en verdi.
Eksempel: "navn" i {"navn": "Ola"}
- Value: Verdien tilknyttet en nøkkel i en ordbok.
Eksempel: "Ola" er verdien til nøkkelen "navn"
- Popping: Fjerne og returnere et element fra en liste eller ordbok.
Eksempel: liste.pop()
- Slicing: Hente ut en del av en liste eller streng.
Eksempel: "Hei"[1:3] gir "ei"
- List comprehension: Kort måte å generere lister på.
Eksempel: [x*2 for x in range(5)]
- Unpacking: Å trekke ut elementer fra en liste eller tuple.
Eksempel: a, b, c = (1, 2, 3)
- Zipping: Kombinerer to lister sammen til tuples.
Eksempel: zip([1, 2, 3], ["a", "b", "c"])
Resten av episodene fortsetter slik – hver begrep blir forklart på en lettfattelig måte. For hver tiende begrep går vi videre i forskjellige kategorier, fra avanserte funksjoner til objektorientert programmering og datastrukturer.
Avslutning
Tusen takk for at du har fulgt med på vår Python-maraton der vi har dekket 100 begreper på 100 minutter. Vi håper denne episoden har gitt deg en solid innføring i de mest fundamentale delene av Python og hvordan de kan anvendes i praksis! 🎉
Her kommer fortsettelsen av 100 Python Begreper på 100 Minutter, der vi tar for oss neste del av episoden med begrepene 41 til 100. 🎧🎙️
41-50: Avanserte Datastrukturer og Operasjoner
- Dictionary Comprehension: Akkurat som list comprehension, men for ordbøker.
Eksempel: {x: x**2 for x in range(5)} gir {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
- Defaultdict: En ordbok som automatisk gir en standardverdi for manglende nøkler.
Eksempel: from collections import defaultdict
- Counter: En måte å telle antall forekomster av elementer i en samling.
Eksempel: Counter([1, 1, 2, 3, 4, 1]) gir {1: 3, 2: 1, 3: 1, 4: 1}
- Heapq: Brukes til å lage prioritetskøer.
Eksempel: heapq.heappush() for å legge til elementer etter prioritet.
- Deque: En dobbeltkø der elementer kan legges til og fjernes fra begge sider.
Eksempel: from collections import deque
- Sortering av lister: Du kan sortere lister enten med sorted()-funksjonen eller ved å bruke .sort()-metoden på listen.
Eksempel: sorted([3, 1, 2]) gir [1, 2, 3]
- Reversere en liste: Med reversed()-funksjonen kan du få elementene i en liste i omvendt rekkefølge.
Eksempel: list(reversed([1, 2, 3])) gir [3, 2, 1]
- Enumerate: Kombinerer en teller med iterasjonen over elementer i en liste.
Eksempel: for i, verdi in enumerate(["a", "b", "c"]) gir indeks og verdi samtidig.
- Map: Brukes til å bruke en funksjon på alle elementene i en samling.
Eksempel: map(str, [1, 2, 3]) konverterer tallene til strenger.
- Filter: Brukes til å filtrere elementer ut av en liste basert på en betingelse.
Eksempel: filter(lambda x: x > 2, [1, 2, 3, 4]) gir elementene større enn 2.
51-60: Objektorientert Programmering (OOP)
- Klasser: En klasse er en mal for å lage objekter. Den definerer egenskaper (attributter) og oppførsel (metoder).
Eksempel: class Person: pass
- Objekter: Objekter er instanser av klasser. Hvert objekt har sin egen tilstand og oppførsel.
Eksempel: ola = Person()
- Konstruktør: Konstruktøren i en klasse brukes til å initialisere objektets tilstand når det opprettes. Dette gjøres ved å bruke init-metoden.
Eksempel: def init(self, navn): self.navn = navn
- Selv (self): self refererer til objektet som kaller metoden. Det må alltid være det første argumentet i metoder i klassen.
Eksempel: self.navn = navn
- Metoder: Funksjoner som er definert inne i en klasse. De opererer på objekter av denne klassen.
Eksempel: def si_hei(self): print(f"Hei, jeg heter {self.navn}")
- Arv: Arv lar en klasse bruke egenskaper og metoder fra en annen klasse.
Eksempel: class Student(Person):
- Super: Brukes for å kalle metoder fra en forelderklasse i en subklasse.
Eksempel: super().init(navn)
- Encapsulation (Innkapsling): Begrens tilgang til bestemte metoder og variabler for å beskytte objektets tilstand.
Eksempel: Private variabler kan skrives med et prefiks _.
- Polymorfi: Tillater bruk av samme metode på forskjellige typer objekter.
Eksempel: En si_hei-metode som fungerer forskjellig for Student og Lærer.
- Dunder-metoder (Magic methods): Metoder som begynner og slutter med __, som str eller repr, brukes for spesialoperasjoner.
Eksempel: def str(self): definerer hvordan et objekt blir printet.
61-70: Filhåndtering og Unntaksbehandling
- Åpne filer: Bruk open() for å åpne en fil.
Eksempel: with open("fil.txt", "r") as f:
- Les filer: Du kan bruke .read() for å lese hele innholdet i en fil.
Eksempel: data = f.read()
- Skrive til filer: Bruk "w"-modus for å skrive til en fil.
Eksempel: with open("fil.txt", "w") as f: f.write("Hei!")
- Lukke filer: Bruk av with gjør at filen automatisk lukkes etter bruk.
Eksempel: Ingen eksplisitt lukking kreves når with brukes.
- Unntak (Exceptions): Brukes for å håndtere feil som oppstår under kjøring av kode.
Eksempel: try: ... except: ...
- Try/Except: Brukes for å "fange" feil og forhindre at programmet krasjer.
Eksempel: try: a = 1 / 0 except ZeroDivisionError: print("Kan ikke dele på null!")
- Raise: Hvis du vil kaste en feil med vilje, kan du bruke raise.
Eksempel: raise ValueError("Dette er en feil!")
- Finally: Blokk med kode som alltid kjøres etter try og except, enten det oppstår en feil eller ikke.
Eksempel: finally: print("Rengjøring!")
- With: En elegant måte å håndtere ressurser som filer eller databaser som automatisk lukkes etter bruk.
Eksempel: with open("fil.txt") as fil:
- Assert: Brukes til å teste en påstand. Hvis påstanden er feil, kaster det en feil.
Eksempel: assert x == 10, "x må være 10"
71-80: API-er og Feiltesting
- API (Application Programming Interface): Tillater kommunikasjon mellom programvarekomponenter ved å sende forespørsler og få svar.
Eksempel: Forespørsler til web-API-er med requests.
- REST API: En type API som bruker HTTP-metoder som GET, POST, PUT, DELETE for å kommunisere.
Eksempel: requests.get("https://api.exapmle.com")
- GET Forespørsel: Henter data fra en server.
Eksempel: requests.get(url)
- POST Forespørsel: Sender data til en server.
Eksempel: requests.post(url, data={})
- Statuskoder: API-svar kommer ofte med HTTP-statuskoder som 200 (OK), 404 (Not Found), og 500 (Server Error).
Eksempel: response.status_code
- JSON (JavaScript Object Notation): Et dataformat for å sende strukturerte data over nettverket.
Eksempel: response.json()
- Unittest: Et rammeverk i Python for å teste koden.
Eksempel: import unittest
- Testing av funksjoner: Du kan skrive tester som sjekker om funksjoner gir riktig resultat.
Eksempel: self.assertEqual(funksjon(), forventet_verdi)
- Mocking: Brukes i testing for å "late som" om en funksjon eller del av systemet oppfører seg på en bestemt måte.
Eksempel: from unittest.mock import patch
- Automatisk Testing: Du kan bruke rammeverk som pytest for å kjøre tester automatisk og kontinuerlig.
Fortsettelse: 100 Python Begreper på 100 Minutter (Del 4)
81-90: Mer om Feilhåndtering, Iterators og Generators
- Iterator: Et objekt som inneholder en sekvens av verdier og kan itereres over.
Eksempel: En liste i en for-løkke fungerer som en iterator.
- Iter(): Brukes til å gjøre et objekt om til en iterator.
Eksempel: iter([1, 2, 3])
- Next(): Henter neste element fra en iterator.
Eksempel: next(iterator)
- Generator: En spesiell type iterator som genererer verdier ved behov, i stedet for å lagre dem alle samtidig i minnet.
Eksempel: yield brukes til å lage en generator.
Eksempel på bruk: def min_generator(): yield 1
- Yield: Brukes i en generator for å returnere et element uten å avslutte funksjonen.
Eksempel: def min_generator(): yield 1; yield 2
- Lazy Evaluation: En teknikk der beregningen utsettes til resultatet faktisk er nødvendig. Generatorer bruker denne teknikken for å spare minne.
Eksempel: Generatorer utfører lazy evaluation fordi de bare genererer verdier når de blir bedt om det.
- List Comprehension: En kortfattet måte å lage lister på, der du kombinerer løkker og betingelser i én linje.
Eksempel: [x for x in range(5)]
- Generator Comprehension: Ligner på list comprehension, men returnerer en generator i stedet for en liste.
Eksempel: (x for x in range(5))
- Map: Brukes til å bruke en funksjon på alle elementer i en samling.
Eksempel: map(str, [1, 2, 3])
- Filter: Brukes til å filtrere elementer i en liste eller iterator basert på en betingelse.
Eksempel: filter(lambda x: x > 2, [1, 2, 3])
91-100: Avanserte Programmeringskonsepter og Optimalisering
- Decorators: En funksjon som tar en annen funksjon som input og returnerer en ny funksjon som utvider eller modifiserer oppførselen til den opprinnelige funksjonen.
Eksempel: @decorator
- Lambda Funksjoner: Anonyme funksjoner som kan defineres i én linje. Brukes ofte der funksjoner kreves som argumenter.
Eksempel: lambda x: x + 2
- Partial Functions: Lager en ny funksjon ved å fikse noen av argumentene i den opprinnelige funksjonen.
Eksempel: from functools import partial
- Memoization: En teknikk der resultatene av en funksjon lagres for å unngå gjentatte beregninger. Kan gjøres ved å bruke functools.lru_cache.
Eksempel: @lru_cache(maxsize=None)
- Concurrency: Utføre flere oppgaver samtidig. Python støtter dette gjennom moduler som threading og asyncio.
Eksempel: Bruk async def og await for asynkrone funksjoner.
- Threading: En måte å kjøre flere tråder av programmet parallelt for å utføre flere operasjoner samtidig.
Eksempel: import threading
- Multiprocessing: Brukes til å kjøre flere prosesser samtidig for å utnytte flere CPU-kjerner.
Eksempel: from multiprocessing import Pool
- Profiling: Verktøy og teknikker for å måle ytelsen til koden din, for eksempel CPU- eller minnebruk.
Eksempel: Bruk cProfile for å profilere Python-koden din.
- Type Hinting: En måte å legge til typespesifikasjoner i funksjoner for å gjøre koden tydeligere og lettere å forstå.
Eksempel: def add(x: int, y: int) -> int: return x + y
- Metaklasser: En avansert teknikk for å kontrollere opprettelsen av klasser. De lar deg modifisere hvordan klasser opprettes i Python.
Eksempel: class Meta(type): pass
Oppsummering og Avslutning
🎯 Hva har vi lært?
Vi har gått gjennom grunnleggende Python-konsepter som variabler, typer, løkker, betingelser og datastrukturer.
Deretter gikk vi videre til mer avanserte emner som objektorientert programmering, feilhåndtering, filhåndtering, iterators, generators og optimalisering.
Til slutt dekket vi mer spesifikke emner som concurrency, threading, decorators, lambda-funksjoner og type hinting.
🛠️ Hvordan bruker vi dette?
Ved å bruke disse konseptene riktig kan vi skrive mer effektiv, lesbar og vedlikeholdbar kode.
Forståelsen av disse konseptene gir oss også en grunnleggende forståelse av hvordan Python fungerer "under panseret", og hvordan vi kan utnytte det fullt ut.
🎧 Hva skjer videre?
Nå som vi har en oversikt over de viktigste Python-konseptene, er neste skritt å anvende dem på ekte prosjekter.
Husk å fortsette å øve og bruke dokumentasjon som Python's offisielle nettsted eller tredjepartsverktøy for videre fordypning.
Dette avslutter 100 Python Begreper på 100 Minutter! Fortsett med å repetere og bruke disse konseptene i din daglige koding, og lykke til med Python-reisen din! 🚀