Programmierpraktikum SoSe 2024, Bachelor Informatik, FU Berlin
ProPra2024 > Sprachen > Python2 > Python-Variablen

Variablen: Namen und Werte in Python

Idea

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?

Loose

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
    x = 5
  • b)
1
    x = int(5)

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
    x = 5
    y = 3
    x += y

6 Was ist mit "mutable aliasing" gemeint?

7 Betrachten Sie folgenden Code:

1
2
3
    mylist = [5, 12]
    mylist2 = mylist
    mylist[0] = 1
  • 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
    mylist = [0, 3, 7]
    x = mylist[2]
    y = x
  • a) Worauf zeigt hier der Name y?
  • b) Welche Namen zeigen auf das Element 7 in der Liste mylist?

14 Zeigen x und y im Folgenden Code auf dasselbe Objekt mit dem Wert 10? Wieso?

1
2
3
    x = 10
    y = x
    y = 10
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".

Information

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.