Die Entbindungsanweisung in Python
Wenn ein Objekt in einem Modul an einen gewöhnlichen Bezeichner gebunden ist, so kann diese Bindung auch wieder aufgehoben werden. Nach dem Aufheben der Bindung ist der gewöhnliche Bezeichner nicht mehr an ein Objekt gebunden
- Protokoll (frei übersetzt)
x
Namensfehler: Der Name 'x' wurde nicht definiert
Oben ist der gewöhnliche Bezeichner »x« nicht an etwas gebunden. Wir binden ihn an den Wert «2».
- Bindung (Fortsetzung des Protokolls)
x = 2
- Auswertung (Fortsetzung des Protokolls)
x
2
Durch »del x« wird der gewöhnliche Bezeichner »x« wieder von seinem Objekt entbunden.
- Löschanweisung (Fortsetzung des Protokolls)
del x
Nach dem Aufheben der Bindung ist der gewöhnliche Bezeichner nicht mehr an etwas gebunden.
- Fortsetzung des Protokolls (frei übersetzt)
x
Namensfehler: Der Name 'x' wurde nicht definiert
Das Aufheben einer Bindung ist eine eigene Form von Anweisung: die Entbindungsanweisung.
»del« ist ein Schlüsselwort.
Ein Schlüsselwort ist ein Wort, das in den Syntaxdiagrammen einer Programmiersprache vorkommt, das also in der Programmiersprache eine fest vorgegebene Rolle hat, die nicht verändert werden kann.
Wir importieren den Namen »random« und binden das aufrufbare Objekt ›random‹ an den Namen »r«.
- Importanweisung
from random import random
- Auswertung (Fortsetzung des Protokolls)
random()
0.897595258922543
- Bindungsanweisung (Fortsetzung des Protokolls)
r = random
Nun können wir die durch den Import angelegte Bindung an den Namen »random« auch löschen, der Name »r« ist immer noch an das aufrufbare Objekt gebunden!
- Entbindungsanweisung (Fortsetzung des Protokolls)
del random
- Auswertung (Fortsetzung des Protokolls)
r()
0.23823918356250
Die Funktion kann erneut importiert werden.
- Importanweisung
from random import random
- Auswertung
random()
0.9562393309572
Es ist nicht nötig und nicht üblich, einen einmal eingeführten Name wieder zu entbinden, wenn es nicht in einem Einzelfall spezielle Gründe dafür gibt.
Wir zeige die Entbindungsanweisung hier eher, weil sie den Mechanismus der Bindung verdeutlicht. Es wird nicht empfohlen, sie in normalen Programmen einzusetzen, wenn es nicht in einem Einzelfall einen speziellen Grund dafür gibt.
Verdecken von Namen aus dem Modul ›builtins‹
Namen aus dem Modul ›builtins‹ können durch Namen unseres Moduls verdeckt werden.
- Konsolenprotokoll (gekürzt)
dir()
['__annotations__', … ]
- Konsolenprotokoll (gekürzt)
dir = 1
dir()
TypeError: 'int' object is not callable
Der Name »dir« wird zuerst in unserem Modul gesucht und nun bereits dort gefunden, so daß der Namen »dir« aus dem Modul ›builtins‹ nicht mehr gefunden wird.
Nach dem Löschen unseres Namens »dir« wird der Name aus dem Modul ›builtins‹ wieder sichtbar.
- Konsolenprotokoll (gekürzt)
del dir
dir()
['__annotations__', … ]
Ein häufiger Fehler besteht in dem versehentlichen Anlegen einen Namens aus der Python -Standardbibliothek im eigenen Modul. Dann kann es später zu Fehlern kommen, weil Namen wie »dir« nicht mehr ihre normale Bedeutung haben. Vermeiden Sie also gegebenenfalls das Anlegen von Namen, die in der Python -Standardbibliothek schon eine bestimmten Bedeutung haben, und prüfen Sie bei Fehlermeldungen, ob das eine mögliche Ursache sein könnte!
Die Python -Standardbibliothek definiert viele Namen, darunter auch Namen, deren Verwendung in eigenen Programmen oft naheliegend ist. Es läßt sich daher nicht immer vermeiden, daß man solche Namen selber definiert, aber man muß sich dieses Problems wenigstens bewußt sein und versuchen, Probleme auf diesem Gebiet zu vermeiden.
In diesem Kurs gehen wir normalerweise davon aus, daß Namen aus der Standardbibliothek nicht umdefiniert wurden.
Syntax
- Syntaxdiagramm (vereinfacht)
Entbindungsanweisung
.---. .--------------------------.
--->( del )--->| gewoehnlicher Bezeichner |--->
'---' '--------------------------'Anweisung
.---------------------------.
---.--->| Auswertungsanweisung |---.--->
| '---------------------------' |
| .---------------------------. |
'--->| from-Importanweisung |---'
| '---------------------------' |
| .---------------------------. |
'--->| Bindungsanweisung |---'
| '---------------------------' |
| .---------------------------. |
'--->| Entbindungsanweisung |---'
'---------------------------'
Anforderungen
Der gewöhnliche Bezeichner muß an ein Objekt gebunden sein.
Semantik
Die Bindung des gewöhnlichen Bezeichners an ein Objekt wird aufgehoben (beendet).