Hoppa till innehållet
AI-grafen
EUniversitetProgrammering· ca 60 min· utvecklas, ses över regelbundet· verifierad 2026-09-20

Typannotationer och kodkvalitet

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

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

Förkunskaper

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

Källor

Alla källor och licenser