Variablen: Namen und Werte in Python
Ziel
- Ich verstehe die Verbindung zwischen Objekten und Namen, wenn ich Zuweisungen in meinem Programm erstelle.
- Ich bin in der Lage, sinnvoll mit Zuweisungen umzugehen.
- Ich verstehe "Dynamic Typing", "Mutability" und "Immutability" in Python.
Hintergrund
Ständig gehen wir mit Variablen um, ebenso mit anderen Namen, die für Klassen, Funktionen oder Module stehen. Aber wissen wir präzise, was das bedeutet – gar nicht mal intern, sondern direkt auf der Ebene der Programmiersprache?
Arbeitsschritte
Schauen Sie sich erst dieses Video an (von 0:50 bis 22:40) und verstehen Sie alle Aussagen, die darin gemacht werden. Probieren Sie die einzelnen Punkte selbst in Python aus, wenn Sie sich nicht sicher sind.
Dieses Material hilft zu verstehen, was "Variablen" in Python wirklich sind, nämlich nur Namen, an die allerlei Objekte gebunden werden können. Die Hauptsache sind aber immer die Objekte! Die Semantik von Python ist einfacher als in den meisten anderen Sprachen, weil alles schön orthogonal ist und nur wenige Konzepte braucht.
1 Was ist die Beziehung zwischen Objekten und Werten von "Variablen"?
2 was ist der Unterschied zwischen folgenden beiden Zuweisungsvarianten?
- a)
1 |
|
- b)
1 |
|
3 Betrachten Sie wieder die Variante b) aus der vorherigen Frage.
Normalerweise nutzen wir die Funktion int()
, wenn wir den Datentyp eines Wertes umwandeln möchten.
Gilt somit int()
als Konstruktor der Klasse int
oder
einfach als eine eingebaute Funktion zur Typumwandlung?
4 Was ist im Video damit gemeint, dass Speicher in Python "dynamisch" verwaltet wird?
5 Welcher Name zeigt auf den Wert 5, nachdem wir diesen Code ausführen?
1 2 3 |
|
6 Was ist mit "mutable aliasing" gemeint?
7 Betrachten Sie folgenden Code:
1 2 3 |
|
- a) Worauf zeigt der Name
mylist2
, nachdem wir den Code laufen lassen? Warum? - b) Welcher Name zeigt auf das
int
-Objekt mit dem Wert 5, nachdem wir den Code laufen lassen? Warum?
8 Was sind "immutable values" ganz genau und welche Datentypen sind in Python "immutable"?
9 Was machen wir eigentlich, wenn wir den Wert einer Variable ändern? Und was passiert mit dem ursprünglichen Wert dieser Variable nach der Änderung?
10 Wird die Definition von "Ändern" beeinflusst, wenn wir mit "mutable" Datentypen arbeiten? Wenn ja, wie genau?
11 Wir haben gelernt, dass das "Ändern" eines "unveränderlichen" Datentyps einfach eine neue Zuweisung bedeutet und dass dieses "Ändern" bei "veränderlichen" Datentypen wirklich den Wert "in-place" ändert. Geben Sie ein kleines Python-Beispiel für eine "Änderung" eines "veränderlichen" Datentyps, wo dabei ein neues Objekt erstellt wird.
12 Im Video wurde die Bedeutung von "Dynamic Typing" in Python erläutert. Beschreiben Sie in eigenen Worten, was diese Eigenschaft bedeutet.
13 Betrachten Sie den folgenden Code:
1 2 3 |
|
- a) Worauf zeigt hier der Name
y
? - b) Welche Namen zeigen auf das Element
7
in der Listemylist
?
14 Zeigen x
und y
im Folgenden Code auf dasselbe Objekt mit dem Wert 10? Wieso?
1 2 3 |
|
Hinweis (nur bei Bedarf): Identität und Immutability
Machen Sie erst hier Gebrauch von der Funktion id()
,
die Ihnen die eindeutige Bezeichnung eines Objekts im Speicher verrät.
Das Schlüsselwort is
könnte Ihnen hierbei auch helfen.
Damit können die Objektidentitäten verglichen werden.
Denken Sie während Ihrer Suche nach einer sinnvollen Begründung für das Verhalten an "Unveränderlichkeit" (Immutability) als Eigenschaft einiger Datentypen in Python.
15 Fassen Sie zusammen, was Sie gelernt haben, indem Sie in eigenen Worten erklären, was gemeint ist, wenn wir sagen, "Variablen sind einfach Namen, die auf Objekte verweisen".
Abgabe
Geben Sie ein Markdown-Dokument ab mit knappen Antworten zu den oben gestellten Fragen
1, 2, … Geben Sie diese Marker mit an.
Geben Sie ggf. Beispiele oder benutzte Quellen an.