mypy ausführen und Typfehler beheben
Konfigurieren Sie mypy, interpretieren Sie Fehler und typisieren Sie eine Codebasis schrittweise.
mypy ausführen und Typfehler beheben ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
mypy installieren und ausführen
Installieren Sie mypy mit pip und führen Sie es für eine Datei oder ein Paket aus. Es meldet Typfehler, ohne Ihren Code auszuführen.
# pip install mypy
# Check a single file:
# mypy script.py
# Check a package:
# mypy mypackage/
# Strict mode (recommended for new code):
# mypy --strict script.pyIhr erster mypy-Fehler
mypy erkennt inkompatible Typen, fehlende Rückgabewerte und nicht annotierte Funktionsargumente.
# script.py
def add(a, b): # mypy: Missing type annotation
return a + b
result: int = add("hello", 1) # str, not int
# mypy output:
# error: Returning Any from function declared to return "int"--strict-Flag
--strict aktiviert viele zusätzliche Prüfungen: fehlende Annotationen, die Verwendung von Any, nicht typisierte Importe usw. Beginnen Sie ohne dieses Flag und fügen Sie es schrittweise hinzu.
# Most important strict flags individually:
# --disallow-untyped-defs
# --disallow-any-generics
# --warn-return-any
# --no-implicit-reexport
# Or all at once:
# mypy --strict mypackage/Fehler ignorieren
Fügen Sie # type: ignore am Ende einer Zeile ein, um einen bestimmten Fehler zu unterdrücken. Verwenden Sie dies sparsam und erklären Sie den Grund in einem Kommentar.
import third_party # type: ignore[import] # no stub available
x: int = get_dynamic_value() # type: ignore[assignment]Konfiguration in mypy.ini / pyproject.toml
Speichern Sie mypy-Einstellungen in mypy.ini oder pyproject.toml, damit Sie nicht bei jeder Ausführung Flags übergeben müssen.
# mypy.ini
[mypy]
python_version = 3.11
strict = True
ignore_missing_imports = True
[mypy-third_party.*]
ignore_errors = TrueInkrementeller Modus
mypy legt Ergebnisse zwischen den Ausführungen im Cache ab. Nur geänderte Dateien werden erneut geprüft, wodurch nachfolgende Ausführungen schnell sind.
# First run:
# mypy mypackage/ — full analysis, ~5 s
# Second run (nothing changed):
# mypy mypackage/ — Success: no issues in 0 source files (0.3 s)Häufiger Fehler: Inkompatible Typen
Der häufigste Fehler: Ein Wert mit dem falschen Typ wird zugewiesen oder übergeben.
# error: Incompatible types in assignment
# (expression has type "str", variable has type "int")
count: int = 0
count = "five" # error
# Fix:
count = 5Häufiger Fehler: Nicht übereinstimmender Argumenttyp
Argumente mit falschem Typ an eine Funktion übergeben.
def greet(name: str) -> str:
return f"Hello, {name}"
# error: Argument 1 to "greet" has incompatible type "int"
greet(42) # error
# Fix:
greet(str(42))Häufiger Fehler: Unerwartete Rückgabe von None
Eine Funktion ist so deklariert, dass sie einen Wert ungleich None zurückgibt, besitzt aber einen Codepfad, der None zurückgibt.
# error: Missing return statement
def find(items: list[int], target: int) -> int:
for item in items:
if item == target:
return item
# Missing: no return if not found!
# Fix:
def find2(items: list[int], target: int) -> int | None:
for item in items:
if item == target:
return item
return NoneTypen mit isinstance eingrenzen
Verwenden Sie isinstance, um einen Union-Typ innerhalb eines Zweigs einzugrenzen. mypy erkennt dies und grenzt den Typ entsprechend ein.
def process(value: int | str) -> str:
if isinstance(value, int):
return str(value * 2) # mypy knows value is int here
return value.upper() # mypy knows value is str herecast verwenden
typing.cast(Type, value) teilt mypy mit, einen Wert als bestimmten Typ zu behandeln, ohne Auswirkungen zur Laufzeit. Verwenden Sie dies nur, wenn Sie es besser wissen als mypy.
from typing import cast
def get_value() -> object:
return 42
result = cast(int, get_value()) # mypy treats result as int
print(result + 1) # 43Kurzer Test
Was bewirkt das Hinzufügen von # type: ignore zu einer Zeile?
Zusammenfassung
Führen Sie mypy script.py aus, um Typen zu prüfen. Beheben Sie inkompatible Zuweisungen, nicht übereinstimmende Argumente und fehlende Rückgabewerte. Verwenden Sie isinstance, um Unions einzugrenzen, # type: ignore sparsam und konfigurieren Sie mypy in mypy.ini. Aktivieren Sie --strict schrittweise.
Häufig gestellte Fragen
Ist die Lektion „mypy ausführen und Typfehler beheben“ kostenlos?
Ja — der vollständige Text von „mypy ausführen und Typfehler beheben“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „mypy ausführen und Typfehler beheben“?
Konfigurieren Sie mypy, interpretieren Sie Fehler und typisieren Sie eine Codebasis schrittweise. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „mypy ausführen und Typfehler beheben“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Grundlegende Typannotationen
- Komplexe Typen: List, Dict, Optional, Union
- TypeVar, generische Klassen und Protocol
- mypy ausführen und Typfehler beheben