Was heißt stark typisiert / dynamisch impliziert in Python?

2 Antworten

Bei statisches Typisierung legst Du den Typ einer Variablen a priori fest, bei dynamischer kann das zur Laufzeit wechseln. Python hat die Eigenart ansich keine Variablen im klassischen Sinne zu kennen, vielmehr nutzt es Namen, die Referenzen auf streng typisierte (und teils statische) Objekte sind.

Hinter einem Namen kann sich also ein Objekt des einen oder anderen Typs zu verschiedenen Zeitpunkten der Ausführung verstecken. Daher dynamisch.

Andererseits ist Python streng(stark) typisiert, der Typ eines Objektes wechselt nicht ohne weiteres und es finden auch kaum implizite Typkonvertierungen statt, vielmehr wird z.B. die Korrektheit dynamisch zur Laufzeit erzwungen, indem illegale Operationen auf inkompatible Typen unterbunden werden (und zru Exception führen).

-------

Man sagt heute eher duck-typing dazu: wenn es wie ne Ente aussieht, watschelt und quackt, dann ist es eine Ente.

https://en.wikipedia.org/wiki/Duck_typing

Stark typisiert ist z.B. java, wo du immer den dateityp davor schreibst und typen-fehler bereits vom compiler erkennt werden. Schwach typisiert heißt dass das Programm die Typenfehler erst zur laufzeit produziert.

Dynamisch typisiert heißt dass du keine typen dazu schreibst, der typ sich auch ändern kann während der laufzeit.

Python ist beides, weil man bei python keine typen angibt, aber python keine operationen erlaubt die Typen-Fehler zut Laufzeit erzeugen.