Kontext: Ich kann bis jetzt nur Java und will ein Programm schreiben um die Metadaten meiner Musikbibliothek zu verändern. Die Bibliothek die das Möglich macht unterstützt nur Python. Anfangs war ich echt positiv von der Einfachheit überrascht, aber mittlerweile kann ich den Hass auf Python sehr stark verstehen. Spätestens bei den Ersten Typisierungsfehlern lernt man stark typisierte Sprachen wie Java zu schätzen.
Du brauchst mypy in deinem Leben.
Oder die Hartkern-Variante: in Rust schreiben und via Python konsumierbar machen mit PyO3
Im Prinzip ja, aber für ein One-Off-Skript zum Anpassen von Metadaten wären mir das dann wahrscheinlich doch zuviele Typen.
Was macht das denn genau?
Python kann mittlerweile statische type hints. Dabei schreibst du nur die intention (“ein int geht rein, ein bool kommt raus”). Mypy warnt dich dann wenn du in irgendeine Funktion Daten reinstecken willst, die nicht reinpassen. Zur Laufzeit werden die type gibts ignoriert. Je nachdem wen man fragt ist das entweder eine total flexible Art Typen so stark oder so lax wie man möchte in seinen code zu integrieren, oder es ist nutzlos da es keine laufzeitsicherheit bietet.