Anmerkungen zu Bindungsanweisungen in Python
Unterdrückung der Ausgabe
Durch eine Bindungsanweisung kann die Ausgabe des Wertes eines Ausdrucks in der Konsole unterdrückt werden.
- Protokoll
2
2
_ = 2
- (keine Ausgabe)
Typen
Objekte haben eine Typ, Namen haben keinen Typ.
Der „Typ eines Namens“ ist also nur durch sein Objekt bestimmt und ändert sich mit dem Objekt.
- Protokoll
x = 2
type( x )
<class 'int'>
x = '2'
type( x )
<class 'str'>
Hilfe bei der Fehlersuche ⃗
Bei einer Fehlermeldung zu einer langen Zeile ist der Auslöser der Fehlermeldung manchmal nicht ganz klar.
- Fehlermeldung
x = a / b / c
ZeroDivisionError: division by zero
Wenn lange Zeilen auf mehrere kurze Zeilen aufgeteilt werden, sind die Fehlermeldungen auch entsprechend genauer. Die Zuweisung kann bei dieser Aufteilung helfen.
- Aufteilung auf zwei Zeilen
d = a / b
x = d / c
Nun kann aus der Fehlermeldung sofort entnommen werden, welcher Wert Null ist.
- Fehlermeldung
x = d / c
ZeroDivisionError: float division by zero
Da Fehlermeldungen immer für eine ganze Zeile gelten, werden sie genauer, wenn Zeilen kurz sind.
Umbindung eines Alias ⃗
Nach der folgenden Eingabe sind die Namen »x« und »y« an dasselbe Objekt ›3‹ gebunden.
- Protokoll
x = 3
y = x
print( x )
3
print( y )
3
Wir nun »y« umgebunden, so hat dies keine Auswirkung auf »x«. Der Name »x« bleibt weiterhin an das Objekt ›3‹ gebunden.
- Protokoll
y = 7
print( x )
3
print( y )
7
Der Begriff der „Bindung“ ⃗
Man spricht von Bindungen von Namen an Objekte und sagt nicht, daß Objekte in Variablen gespeichert werden, weil es einigen schwer fällt sich vorzustellen, daß ein und dasselbe Objekt in zwei verschiedenen Variablen enthalten sein kann (wie ›True‹ nach »b = True« und »d = True« an ›b‹ und ›d‹).
Sprechweisen ⃗
- Bindungsanweisung
x = 2
Bei der Ausführung einer Bindungsanweisung wird der gewöhnliche Bezeichner auf der linken Seite an das Objekt auf der rechten Seite gebunden.
Man spricht auch von einer Zuweisung eines Objektes (oder Wertes) an einen Bezeichner. Entsprechend wird die Bindungsanweisung auch als Zuweisungsanweisung bezeichnet.
Einen Namen nennt man auch eine Variable. Man sagt auch „Das Objekt wird der Variablen zugewiesen.“
Gewöhnliche Bezeichner ohne Wert ⃗
Ein gewöhnlicher Bezeichner kann nicht ausgewertet werden, wenn noch kein Objekt an ihn gebunden wurde.
- Protokoll
y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'y' is not defined
Der Status des Gleichheitszeichens »=« ⃗
Das Gleichheitszeichen in einer Bindungsanweisung ist kein Operator, sondern ein Begrenzer. (The Python Language Reference, Release 3.7.0a1, 2.6 Delimiters ). Eine Bindungsanweisung ist ja auch kein Ausdruck, sondern eine Anweisung.
Die Bedeutung eines Namens ⃗
Die Bedeutung eines Namens unterscheidet sich in Abhängigkeit vom Orte seiner Verwendung.
Wenn der Name auf der linken Seite des Gleichheitszeichens einer Bindungsanweisung steht, so bildet er mit dem Gleichheitszeichen zusammen eine Anweisung, deren Ausführung eine neue Bindung für diesen Namen festlegt.
Andernfalls steht der als Ausdruck verwendete Name für den Wert, an den er zuletzt gebunden wurde.
Navigierbarkeit ⃗
Es ist immer nur möglich, von einem Namen über eine Bindung zu einem Objekt zu gelangen.
Wenn man ein Objekt hat, kann man nicht umgekehrt, vom Objekt ausgehend die Namen des Objektes finden.
Da eine Bindung zwischen einem Namen und einen Objekt keine bestimmte Reihenfolge kennt, verwenden wir die Ausdrück „einen Namen an ein Objekt binden“ und „ein Objekt an einen Namen binden“ mit derselben Bedeutung.
Binden und Kopieren ⃗
Im folgenden wird der Name »x« an denselben Wert gebunden, an den bereits der Name »credits« gebunden ist.
- Protokoll
credits
Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
for supporting Python development. See www.python.org for more information.x = credits
x
Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
for supporting Python development. See www.python.org for more information.
Durch die Bindungsanweisung »x = credits« wird der Text »Thanks to CWI …« nicht kopiert. Der Name »x« wird lediglich an diesen Text gebunden, der weiterhin nur einmal im Speicher existiert. Dies bedeutet, daß das Binden eines neuen Namens (wie »x«) an einen sehr langen Text nicht besonders viel Speicherplatz kostet, da der lange Text dabei nicht kopiert wird.
Änderung der Bindungsanweisung ⃗
Die Ausführung einer Bindungsanweisung bewirkt eine Änderung, das heißt: sie verändert etwas, hat aber – wie alle Anweisungen – keinen Wert.
- Bindungsanweisung
x = 2
Die Auswertung eines Namens ergibt einen Wert, das heißt: sie ergibt einen Wert, aber sie verändert nichts. (Wir ignorieren hierbei die Ausgabe des Wertes auf die Konsole, da diese nur eine Hilfe für den Programmierer sein soll, aber in fertigen Programmen normalerweise nicht verwendet wird.)
- Auswertung
x
2