{"id":190951,"date":"2026-02-19T13:18:01","date_gmt":"2026-02-19T12:18:01","guid":{"rendered":"https:\/\/liora.io\/de\/?p=190951"},"modified":"2026-02-19T13:18:02","modified_gmt":"2026-02-19T12:18:02","slug":"einfuehrung-in-die-python-typisierung-und-annotationen","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/einfuehrung-in-die-python-typisierung-und-annotationen","title":{"rendered":"Einf\u00fchrung in die Python Typisierung und Annotationen"},"content":{"rendered":"<p><strong>Python Typisierung: Wenn man lernt, in Python zu codieren, ist die Frage der Typisierung ein Thema, das nur sehr selten ber\u00fccksichtigt wird, obwohl es bei einer Sprache wie Java unumg\u00e4nglich ist. Wie kommt es also zu diesem &#8222;Vergessen&#8220; bei einer der meistgenutzten Programmiersprachen des letzten Jahrzehnts?<\/strong><\/p>\n<!-- \/wp:post-content -->\n\n<!-- wp:paragraph -->\n<p>Um diese Frage zu beantworten, ist es wichtig, sich mit einigen Grundlagen zu besch\u00e4ftigen. Die Entwicklung von Software erfordert ein klares Verst\u00e4ndnis der Datentypisierung und der Art und Weise, wie Daten in verschiedenen Kontexten verwendet werden. <b>Die Typisierung bzw. die <\/b><strong>Python Typisierung<\/strong> <b>in der Programmierung definiert die Art der Werte, die die Daten, die wir bearbeiten, annehmen k\u00f6nnen.<\/b> Um den Typ einer Variablen in Python zu testen, rufen wir die Funktion type() auf, die, wenig \u00fcberraschend, den Typ des Objekts, das als Parameter der Funktion eingegeben wurde, zur\u00fcckgibt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die Funktion wird wie folgt verwendet:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Der Typ des Arguments wird mithilfe der Funktion print() in folgender Form angezeigt:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>&gt;&gt; &lt;class &#8218;int&#8216;&gt;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Im obigen Beispiel wird eine ganzzahlige numerische Variable getestet, der entsprechende Typ ist int. In Python gibt es eine Vielzahl von sogenannten nativen Typen. Eine vollst\u00e4ndige Liste findest du auf der Seite der <a href=\"https:\/\/docs.python.org\/fr\/3\/library\/stdtypes.html\">offiziellen Dokumentation<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Python ist als <b>dynamisch typisierte Sprache<\/b> ziemlich flexibel bei der Verwaltung von Datentypen, aber diese Flexibilit\u00e4t kann manchmal zu Verwirrung und Fehlern f\u00fchren. Hier kommen die <strong>Python Typisierung<\/strong>&nbsp; bzw. Typ-Annotationen ins Spiel, die dem Python-Code eine zus\u00e4tzliche Ebene der Klarheit und Typ\u00fcberpr\u00fcfung hinzuf\u00fcgen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:buttons {\"className\":\"is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"} -->\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><!-- wp:button -->\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-scientist\">Mehr zu Typisierung und Annotation in Python<\/a><\/div>\n<!-- \/wp:button --><\/div>\n<!-- \/wp:buttons -->\n\n<!-- wp:heading -->\n<h2 id=\"h-python-typisierung\" class=\"wp-block-heading\">Python Typisierung<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>In der Programmierung gibt es haupts\u00e4chlich zwei Arten der Typisierung: die<strong> statische und die dynamische Typisierung.<\/strong><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 id=\"h-1-statische-typisierung\" class=\"wp-block-heading\">1. Statische Typisierung<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>In einer statisch typisierten Sprache muss jede Variable einem vom Programmierer festgelegten Typ zugewiesen werden. Sprachen wie Java, C und <a href=\"https:\/\/liora.io\/de\/c-was-die-meisten-nicht-wissen\">C++<\/a> verfolgen diesen Ansatz. Nehmen wir das Beispiel von Java f\u00fcr die Definition einer numerischen Variable, so lautet die Syntax wie folgt:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>int a <b>=<\/b> 2;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Float b <b>=<\/b> 3,;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>String c <b>=<\/b> &#8218;Hello World&#8216;;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><a href=\"https:\/\/liora.io\/de\/javascript-meistern-die-komplette-roadmap-zur-webentwicklung\">Du musst Java nicht beherrschen,<\/a> um diese Syntax zu verstehen. Jede Variable a, b oder c wird durch ihren Typ eingeleitet, gefolgt von dem ihr zugewiesenen Wert. Der statische Aspekt der Typisierung wird deutlich, und um ihn zu \u00fcberpr\u00fcfen, musst du einfach nur sehen, was passieren w\u00fcrde, wenn du versuchst, einer der Variablen einen neuen Wert zuzuweisen. Du kannst es auf diesem <strong>Online-Compiler<\/strong> selbst ausprobieren.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ein wichtiger Vorteil dieses Ansatzes ist die Strenge, die er bei der Definition von Variablen an den Tag legt: Es gibt keine Zweifel \u00fcber die Art der Variablen, und es ist f\u00fcr den Compiler leichter, typbezogene Fehler zu erkennen. Au\u00dferdem wird die Typ\u00fcberpr\u00fcfung in der Regel beim Kompilieren durchgef\u00fchrt, was eine schnellere Ausf\u00fchrung erm\u00f6glicht.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 id=\"h-2-dynamische-typisierung\" class=\"wp-block-heading\">2. Dynamische Typisierung<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Im <a href=\"https:\/\/liora.io\/de\/python-schulung\">Gegensatz dazu setzt Python auf dynamische Typisierung.<\/a> Das bedeutet, dass die Typisierung erst nach der Ausf\u00fchrung des Codes durchgef\u00fchrt und \u00fcberpr\u00fcft wird, nicht vorher. Wenn du also eine <a href=\"https:\/\/liora.io\/de\/python\">Variable in Python definierst,<\/a> musst du ihren Typ nicht angeben, sondern er wird vom Interpreter abgeleitet. Au\u00dferdem kann man, sobald eine Variable definiert ist, ihr unabh\u00e4ngig von ihrem Typ einen neuen Wert zuweisen, ohne einen Fehler zu verursachen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Beispiel:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>Welche Typisierung soll ich also am besten w\u00e4hlen?<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Auf diese Frage gibt es keine feste Antwort: Sie wird vom Programmierrahmen bestimmt. Wenn die <strong>Aufgabe absolute Disziplin und Transparenz im Code erfordert<\/strong>, dann ist eine statische Typisierung die beste Wahl. Wenn der Programmierer die freie Hand \u00fcber den Code haben soll, dann kann die Flexibilit\u00e4t und die Geschwindigkeit des Schreibens einer dynamischen Typisierung eine interessante L\u00f6sung sein.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><em>Aber sollte man Python meiden, wenn man eine statische Typisierung will?<\/em><\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image -->\n\n<!-- \/wp:image -->\n\n<!-- wp:buttons {\"className\":\"is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"} -->\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><!-- wp:button -->\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung-data-engineer\">Beherrschung der Typisierung und Annotation in Python<\/a><\/div>\n<!-- \/wp:button --><\/div>\n<!-- \/wp:buttons -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Python Typisierung bzw. Typ-Annotationen in Python<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Um eine <strong>statische Typisierung zu simulieren,<\/strong> bietet Python ein System von Typ-Annotationen. Mit <a href=\"https:\/\/liora.io\/de\/python-annotations-wie-und-wann-benutzt-man-sie\">Typannotationen<\/a> kann der Programmierer den Typ der Argumente einer Funktion und den Typ ihres R\u00fcckgabewerts angeben. Beispiel:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Diese Funktion, die als Argument eine Zeichenkette a verwendet, die standardm\u00e4\u00dfig den Wert &#8218;Hello World&#8216; und gibt diese Zeichenkette aus, k\u00f6nnen wir zwei Anmerkungen angeben:&nbsp;<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Die erste Annotation entspricht dem Typ der gew\u00fcnschten Argumentvariablen, a : str. Hier wird <b>angegeben<\/b>, dass das Argument a, das der Benutzer unserer Funktion eingibt, vom Typ str sein muss<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Diese Anmerkungen sind \u00fcber das Attribut __annotations__ zug\u00e4nglich, in unserem Beispiel haben wir die folgenden Anmerkungen:&nbsp;<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Es ist wichtig zu beachten, dass diese Annotationen Hinweise und keine strikten Einschr\u00e4nkungen sind. <a href=\"https:\/\/liora.io\/de\/variablentypen-in-python-was-hat-es-damit-auf-sich\">Python verhindert nicht die Ausf\u00fchrung des Codes,<\/a> wenn die tats\u00e4chlichen Typen nicht mit den annotierten Typen \u00fcbereinstimmen. Allerdings k\u00f6nnen diese Annotationen sehr hilfreich sein, um die Absicht des Programmierers zu verstehen und potenzielle Typisierungsfehler zu erkennen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">MyPy: Ein Typpr\u00fcfer f\u00fcr die Python Typisierung<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Auch wenn<strong> Typ-Annotationen<\/strong> n\u00fctzlich sind, bieten sie keine echte Typ\u00fcberpr\u00fcfung in Python. Um diese L\u00fccke zu schlie\u00dfen, k\u00f6nnen Werkzeuge von Drittanbietern wie<strong> MyPy<\/strong> verwendet werden.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>MyPy ist eine<a href=\"https:\/\/liora.io\/de\/sympy-alles-ueber-die-python-bibliothek-fuer-symbolisches-rechnen\"> Python-Bibliothek,<\/a> die die statische Typisierung von Python-Code \u00fcberpr\u00fcft und dabei hilft, Fehler zu finden, bevor dein Programm ausgef\u00fchrt wird. Sie arbeitet Hand in Hand mit den Typ-Annotationen und stellt sicher, dass diese eingehalten werden. MyPy macht den Code nicht ung\u00fcltig, wenn die Typisierung nicht beachtet wird, aber es liefert einen detaillierten Bericht \u00fcber die aufgetretenen Typisierungsfehler. Dadurch kann der Entwickler diese Fehler beheben, bevor sie zu Problemen bei der Ausf\u00fchrung des Codes f\u00fchren.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Die gebr\u00e4uchlichste Art, es zu verwenden, ist die Verwendung als Debugger nach folgendem Schema:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Schreibe deinen Python-Code und speichere ihn als .py.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Gebe in einem Terminal folgenden Befehl ein: mypy my_file.py<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Wenn Fehler gefunden werden, werden sie von MyPy zur\u00fcckgegeben, wobei der Typ des Fehlers, seine Position im Code und die Ursache des Fehlers angegeben werden.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Zusammenfassend l\u00e4sst sich sagen, dass, obwohl Python eine Sprache mit dynamischer Typisierung ist, die Verwendung von Typ-Annotationen und <strong>Typ-Pr\u00fcfern wie MyPy<\/strong> die Klarheit und Robustheit des Python-Codes stark verbessern kann. Diese Werkzeuge k\u00f6nnen besonders in gro\u00dfen Softwareentwicklungsprojekten n\u00fctzlich sein, wo ein klares Verst\u00e4ndnis der Datentypisierung f\u00fcr die Aufrechterhaltung eines qualitativ hochwertigen Codes unerl\u00e4sslich ist.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image -->\n\n<!-- \/wp:image -->\n\n<!-- wp:buttons {\"className\":\"is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"} -->\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><!-- wp:button -->\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung-data-engineer\">Typisierung und Annotation in Python lernen<\/a><\/div>\n<!-- \/wp:button --><\/div>\n<!-- \/wp:buttons -->\n\n<!-- wp:html -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Python Typisierung\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"In der Programmierung gibt es zwei Hauptarten der Typisierung: Bei der statischen Typisierung (z.B. Java, C) muss jede Variable einem festen Typ zugewiesen werden, was Strenge und fr\u00fche Fehlererkennung erm\u00f6glicht. Python verwendet dagegen dynamische Typisierung: Der Typ wird vom Interpreter zur Laufzeit abgeleitet, und Variablen k\u00f6nnen nachtr\u00e4glich neue Werte anderen Typs erhalten. Die Wahl zwischen beiden Ans\u00e4tzen h\u00e4ngt vom Projektkontext ab \u2013 statische Typisierung f\u00fcr Disziplin und Transparenz, dynamische f\u00fcr Flexibilit\u00e4t und schnelles Schreiben.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Python Typisierung bzw. Typ-Annotationen in Python\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Typ-Annotationen erm\u00f6glichen in Python die Simulation statischer Typisierung. Mit ihnen kann der Programmierer die erwarteten Typen von Funktionsargumenten und R\u00fcckgabewerten angeben, z.B. 'a: str' f\u00fcr ein String-Argument. Diese Annotationen sind \u00fcber das Attribut __annotations__ zug\u00e4nglich und dienen als Hinweise \u2013 Python erzwingt sie nicht, aber sie verbessern die Codeverst\u00e4ndlichkeit und helfen, Typisierungsfehler zu erkennen.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"MyPy: Ein Typpr\u00fcfer f\u00fcr die Python Typisierung\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"MyPy ist eine Python-Bibliothek zur statischen Typ\u00fcberpr\u00fcfung. Sie arbeitet mit Typ-Annotationen zusammen und pr\u00fcft, ob diese eingehalten werden, ohne den Code auszuf\u00fchren. Die Verwendung erfolgt durch Speichern des Python-Codes als .py-Datei und Ausf\u00fchren von 'mypy my_file.py' im Terminal. MyPy liefert einen detaillierten Bericht \u00fcber gefundene Typfehler, die dann vor der Ausf\u00fchrung behoben werden k\u00f6nnen \u2013 besonders wertvoll in gro\u00dfen Softwareprojekten f\u00fcr bessere Codequalit\u00e4t und Robustheit.\"\n      }\n    }\n  ]\n}\n<\/script>\n<!-- \/wp:html -->","protected":false},"excerpt":{"rendered":"<p>Python Typisierung: Wenn man lernt, in Python zu codieren, ist die Frage der Typisierung ein Thema, das nur sehr selten ber\u00fccksichtigt wird, obwohl es bei einer Sprache wie Java unumg\u00e4nglich ist. Wie kommt es also zu diesem &#8222;Vergessen&#8220; bei einer der meistgenutzten Programmiersprachen des letzten Jahrzehnts? Um diese Frage zu beantworten, ist es wichtig, sich [&hellip;]<\/p>\n","protected":false},"author":50,"featured_media":218600,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2476],"class_list":["post-190951","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-dev"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/190951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/50"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=190951"}],"version-history":[{"count":4,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/190951\/revisions"}],"predecessor-version":[{"id":218601,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/190951\/revisions\/218601"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/218600"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=190951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=190951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}