wie kann ich prüfen, dass ein assoziatives array noch nicht belegt ist?
Code: Alles auswählen
result = {}
if result['test'] == "":
print "leer"
else:
print "voll"
Tekl
Code: Alles auswählen
result = {}
if result['test'] == "":
print "leer"
else:
print "voll"
Code: Alles auswählen
try:
print someDict['foo']
except KeyError:
print 'Nicht gefunden.'
Grundsätzlich verstehe ich diesen Ansatz, aber ich verstehe nicht, wie sich im obigen Fall der Inhalt des dictionaries zwischen der Prüfung auf vorhandenen Schlüssel und der direkt darauf folgenden Ausgabe verändern soll.Y0Gi hat geschrieben:Grund/Vorteil: Eine vorhergehende Prüfung, die erfolgreich ist, kann im Moment des Zugriffs bereits nicht mehr aktuell sein, da z.B. in diesem Fall das Dictionary bereits verändert worden sein könnte.
Stichwort Multithreading.pütone hat geschrieben:Grundsätzlich verstehe ich diesen Ansatz, aber ich verstehe nicht, wie sich im obigen Fall der Inhalt des dictionaries zwischen der Prüfung auf vorhandenen Schlüssel und der direkt darauf folgenden Ausgabe verändern soll.
Ist klar.Leonidas hat geschrieben:Stichwort Multithreading.
Naja, dann gibt es noch die Möglichkeit, dass sich die Datenstruktur unterdessen noch ändert. Also wenn zwischen dem Test und dem Code der Existenz des Elements vorraussetzt sich Code mit Seiteneffekten befindet. Dieser Code könnte durchaus die Struktur der Daten verändern. Kommt zwar relativ selten vor, aber denkbar.pütone hat geschrieben:Aber wenn ich alles in einem Thread laufen lasse, spricht doch nichts dagegen, in einem Fall wie dem obigen VORHER zu prüfen und ohne exception-handling zu programmieren, oder?
In dem konkreten Fall und auch vielen anderen mag sich das theoretisch nicht ändern können. Fälle, in denen das passiert, sind aber mehr als denkbar, nämlich alltäglich. Mit dem Abfangen einer Exception ist man *immer* auf der sicheren Seite, deshalb sollte man sich auch angewöhnen, immer so zu arbeiten. Dennoch kann der `in`-Operator auch in Fällen sinnvoll sein, in denen keine Exception geworfen würde.pütone hat geschrieben:Grundsätzlich verstehe ich diesen Ansatz, aber ich verstehe nicht, wie sich im obigen Fall der Inhalt des dictionaries zwischen der Prüfung auf vorhandenen Schlüssel und der direkt darauf folgenden Ausgabe verändern soll.