Löschen von Variablen in Python (Löschen von Variablen in Python), Lektion, Seite 723970
https://www.purl.org/stefan_ram/pub/variablenloeschen_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

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).

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723970 stefan_ram:723970 Löschen von Variablen in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723970, slrprddef723970, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/variablenloeschen_python