{"id":179463,"date":"2023-07-02T08:48:15","date_gmt":"2023-07-02T07:48:15","guid":{"rendered":"https:\/\/liora.io\/de\/?p=179463"},"modified":"2026-08-07T15:55:51","modified_gmt":"2026-08-07T13:55:51","slug":"variablentypen-in-python-was-hat-es-damit-auf-sich","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/variablentypen-in-python-was-hat-es-damit-auf-sich","title":{"rendered":"Variablentypen in Python: Was hat es damit auf sich?"},"content":{"rendered":"\n<p><strong>Python hat sich seit einiger Zeit als eine der f\u00fchrenden Programmiersprachen f\u00fcr Data Science etabliert: Es ist einfach zu erlernen f\u00fcr Personen mit einem Hintergrund als Statistiker, gut ausgestattet mit Bibliotheken, zu allem f\u00e4hig und ein treuer Begleiter f\u00fcr Data Scientists.<\/strong><\/p>\n\n\n\n<p>Allerdings kann man <a href=\"https:\/\/liora.io\/de\/julia-vs-python-welche-sprache-ist-die-beste-fuer-data-science\">Data Science auf einem ziemlich hohen Niveau betreiben,<\/a> ohne alles \u00fcber die Besonderheiten zu wissen: Wie viele Data Scientists benutzen Dekoratoren? Ist Python multi-thread oder multi-core?<\/p>\n\n\n\n<p>Als ich neulich versuchte, die Frage zu beantworten, warum der folgende Code zwei verschiedene Ergebnisse anzeigt, habe ich mich gefragt, warum Python so viele verschiedene Ergebnisse anzeigt,<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eDynamische Typisierung vs. statische Typisierung\u201c\" decoding=\"async\" height=\"130\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.12-1024x167.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.12-1024x167.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.12-300x49.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.12-768x125.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.12.png 1200w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<p>bin ich auf <a href=\"https:\/\/github.com\/pandas-dev\/pandas\/blob\/master\/pandas\/core\/series.py#L2083\">das<\/a> hier gesto\u00dfen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eDynamische Typisierung vs. statische Typisierung\u201c\" decoding=\"async\" height=\"149\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.18-1024x191.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.18-1024x191.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.18-300x56.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.18-768x143.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.24.18.png 1190w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<p>F\u00fcr diejenigen, die wie ich schon <a href=\"https:\/\/liora.io\/de\/java-grundlagen-wir-erklaerens-dir-jdk-jre-und-jvm\">mit Java gearbeitet<\/a> haben, mag es Erinnerungen (oder sogar Verletzungen) hervorrufen, aber f\u00fcr einen unerfahrenen Python-Benutzer mag es \u00fcberraschend sein.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dynamische-typisierung-vs-statische-typisierung\">Dynamische Typisierung vs. statische Typisierung<\/h2>\n\n\n\n<p>Python ist eine dynamisch typisierte Sprache, d. h. du kannst den Typ einer Variablen \u00e4ndern. Im Gegensatz dazu zwingt eine statisch typisierte Sprache dazu, den Typ der Variablen zu definieren und ihn w\u00e4hrend der Lebensdauer der Variablen beizubehalten.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eDynamische Typisierung vs. statische Typisierung\u201c\" decoding=\"async\" height=\"66\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.26.16-1024x85.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.26.16-1024x85.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.26.16-300x25.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.26.16-768x64.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.26.16.png 1200w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<p>Das macht Python nat\u00fcrlich sehr benutzerfreundlich, da du den Typ einer Variablen nicht im Voraus angeben musst und du ihn leicht \u00e4ndern kannst. Aber zu versuchen, das mit Java zu tun&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:200px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Ich beim Coden in Java - Allegorie\" decoding=\"async\" height=\"200\" loading=\"lazy\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/volcan.gif\" style=\"width:200px;max-width:100%;height:auto\" width=\"200\"\/><figcaption class=\"wp-element-caption\">Ich beim Coden in Java ,  Allegorie<\/figcaption><\/figure>\n\n\n\n<p>Diese <strong>Einfachheit von Python<\/strong> kann auch zu Verwirrung f\u00fchren.<\/p>\n\n\n\n<p>Wenn du nicht genau wei\u00dft, welche Art von Variablen eine Funktion annehmen kann, kannst du Schwierigkeiten haben, den Code einer anderen Funktion zu lesen.<\/p>\n\n\n\n<p>Eine der Funktionen, die Python bietet, erm\u00f6glicht es uns, die Illusion einer statischen Typisierung zu erzeugen: Annotationen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"annotationen\">Annotationen<\/h3>\n\n\n\n<p>In Python kannst du Annotationen verwenden, um Informationen \u00fcber den Code, den du gerade schreibst, hinzuzuf\u00fcgen.<\/p>\n\n\n\n<p>Du kannst die Art der Argumente mit einem &#8222;:&#8220; und einem String dahinter angeben, aber auch die Art der Ausgabe der Funktion. Auf diese Anmerkungen kann man mit Hilfe von:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eAnnotationen\u201c\" decoding=\"async\" height=\"47\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.32-1024x60.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.32-1024x60.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.32-300x17.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.32-768x45.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.32.png 1204w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/cloud-dev\/cloud-engineer\">Cloud Engineer Weiterbildung entdecken<\/a><\/div><\/div>\n\n\n\n<p>was folgendes zur\u00fcckgibt:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eAnnotationen\u201c\" decoding=\"async\" height=\"41\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.38-1024x53.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.38-1024x53.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.38-300x16.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.38-768x40.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.38.png 1200w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<p>Dennoch habe ich die interne Struktur von Python nicht ver\u00e4ndert. Schlimmer noch, es hat keinen Sinn.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eAnnotationen\u201c\" decoding=\"async\" height=\"43\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.44-1024x55.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.44-1024x55.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.44-300x16.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.44-768x42.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.44.png 1184w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<p>und<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\" style=\"margin-top:32px;margin-bottom:32px\"><img alt=\"Illustration zu \u201eAnnotationen\u201c\" decoding=\"async\" height=\"72\" loading=\"lazy\" sizes=\"(max-width: 800px) 100vw, 800px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.50-1024x92.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.50-1024x92.png 1024w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.50-300x27.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.50-768x69.png 768w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.43.50.png 1202w\" style=\"width:100%;height:auto\" width=\"800\"\/><\/figure>\n\n\n\n<p>funktionieren sehr gut&#8230;<\/p>\n\n\n\n<p>Was ist also los? Abgesehen vom \u00e4sthetischen Aspekt (der relativ ist), ist es v\u00f6llig unn\u00f6tig?<\/p>\n\n\n\n<p>Nun, ja und nein&#8230;<\/p>\n\n\n\n<p>In der Tat sind diese Annotationen nur ein Mittel, um Informationen \u00fcber die verschiedenen Argumente und Ausgaben deiner Funktion zu erhalten, aber der Gewinn an Klarheit ist bei der Verwendung der Funktion nicht zu vernachl\u00e4ssigen.<\/p>\n\n\n\n<p>Wenn du mit mehreren<strong> Personen zusammenarbeitest<\/strong> oder einfach nur Code austauschst, kann es sehr n\u00fctzlich sein, die Argumente und Ausgaben einer Funktion, die du benutzt, genau zu identifizieren.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"mypy\">MyPy<\/h3>\n\n\n\n<p>Aber man kann diese Annotationen mit einem anderen Werkzeug kombinieren: MyPy. Das ist eine Bibliothek, die nicht wirklich verstanden hat, wie Python funktioniert, und die denkt, dass Annotationen wirklich Typdeklarationen sind.<\/p>\n\n\n\n<p>Sie kann \u00fcberpr\u00fcfen, ob du alles richtig machst&#8230; ob du Quadrate in Quadrate, Kreise in Kreise und Dreiecke in Dreiecke setzt.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\" style=\"width:300px;max-width:100%;margin-top:32px;margin-right:auto;margin-bottom:32px;margin-left:auto\"><img alt=\"Illustration zu \u201eMyPy\u201c\" decoding=\"async\" height=\"230\" loading=\"lazy\" sizes=\"(max-width: 300px) 100vw, 300px\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.44.01-300x230.png\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.44.01-300x230.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/07\/Capture-decran-2020-05-22-a-14.44.01.png 512w\" style=\"width:300px;max-width:100%;height:auto\" width=\"300\"\/><\/figure>\n\n\n\n<p>Man sollte die <a href=\"https:\/\/liora.io\/de\/python-annotations-wie-und-wann-benutzt-man-sie\">Annotationen also als Hilfe bei der Entwicklung und beim Teilen von Code sehen<\/a> und MyPy als Anleitung zum sauberen Entwickeln. Zugegeben, es macht keinen gro\u00dfen Unterschied, wenn man auf einem Notebook codiert und alle seine Funktionen aus Sklearn oder Pandas importiert.<\/p>\n\n\n\n<p>Sicherlich w\u00fcrde eine echte statische Typisierung die Arbeit von Python beschleunigen (da <a href=\"https:\/\/liora.io\/de\/pygtk-das-tool-zur-erstellung-von-grafischen-benutzeroberflaechen-in-python\">Python<\/a> nicht mehr den Typ von Variablen ableiten m\u00fcsste), aber es kann helfen, sich zurechtzufinden und ein \u00dcberma\u00df an Codezeilen zu debuggen.<\/p>\n\n\n\n<p>Und obwohl ich wei\u00df, dass Anmerkungen wie gute Vors\u00e4tze sind, man nimmt sich vor, sie zu benutzen, und zwei Funktionen sp\u00e4ter ist alles wieder vergessen, wollte ich dir zumindest von meiner Entdeckung erz\u00e4hlen.<\/p>\n\n\n\n<p>Hat dir dieser Artikel gefallen? Dann melde dich f\u00fcr unseren Newsletter an und erhalte Datentipps, die du sonst nirgends findest!<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center wp-container-core-buttons-is-layout-5ee10de4\" style=\"margin-top:32px;margin-bottom:32px\"><div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/liora.io\/de\/weiterbildung\/data-ki\/data-analyst\">Einen Termin vereinbaren<\/a><\/div><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Python hat sich seit einiger Zeit als eine der f\u00fchrenden Programmiersprachen f\u00fcr Data Science etabliert: Es ist einfach zu erlernen f\u00fcr Personen mit einem Hintergrund als Statistiker, gut ausgestattet mit Bibliotheken, zu allem f\u00e4hig und ein treuer Begleiter f\u00fcr Data Scientists. Allerdings kann man Data Science auf einem ziemlich hohen Niveau betreiben, ohne alles \u00fcber [&hellip;]<\/p>\n","protected":false},"author":76,"featured_media":179467,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2476],"class_list":["post-179463","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\/179463","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\/76"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=179463"}],"version-history":[{"count":5,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/179463\/revisions"}],"predecessor-version":[{"id":225015,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/179463\/revisions\/225015"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/179467"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=179463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=179463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}