Hoppa till innehållet
AI-grafen
E· Universitetprogrammering· ca 60 min· utvecklande· verifierad 2026-09-20

Typannotationer och kodkvalitet

Kunna använda type hints, linters och formatterare för läsbar och säker kod.

Förkunskaper

Intuition

Python kör utan typer, men type hints låter verktyg hitta fel innan koden körs — och dokumenterar API:t på köpet.

def medel(varden: list[float], vikt: float | None = None) -> float: ...

Signaturen säger allt: en lista med tal in, eventuellt en vikt, ett tal ut.

Var typning ger mest värde:

  • Publika funktioner som andra anropar.
  • Datastrukturer som passerar mellan moduler (dataclass, Pydantic, TypedDict).
  • Gränssnitt mot omvärlden: API-svar, konfiguration, filformat.

Var det ger minst: korta skript, notebooks, uppenbara lokala variabler.

Kod

from dataclasses import dataclass
from typing import Protocol, Literal

@dataclass(frozen=True)
class Resultat:
    slug: str
    score: float
    metod: Literal["rule", "llm", "runner"]

class Rattare(Protocol):                     # strukturell typning: allt med rätt form duger
    def ratta(self, svar: str) -> Resultat: ...

def sammanfatta(resultat: list[Resultat]) -> dict[str, float]:
    if not resultat:
        return {}
    return {"medel": sum(r.score for r in resultat) / len(resultat),
            "max": max(r.score for r in resultat)}
mypy src/            # typkontroll — hittar fel utan att köra koden
ruff check src/      # linter: oanvända importer, odefinierade namn, vanliga misstag
ruff format src/     # formatterare

Det typning faktiskt fångar: None där ett värde förväntas (den vanligaste körtidsbuggen i Python), fel argumentordning, fält som bytt namn efter en refaktorering, och returvärden som inte matchar. Kör mypy i CI, annars ruttnar annotationerna.

Var realistisk: börja med --ignore-missing-imports och typa de moduler som andra beror på. Full typtäckning i ett befintligt projekt är sällan värt det.

Behärskning innebär

  • Använder type hints på funktioner och datastrukturer
  • Kör mypy/ruff och tolkar felen
  • Vet var typning ger mest värde

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser