Ein Wörterbuch kann automatisch in ein Boolean umgewandelt werden, das in False
für ein leeres Wörterbuch und in True
für ein nicht-leeres Wörterbuch ausgewertet wird.
if myDictionary: non_empty_clause()
else: empty_clause()
Wenn dies zu idiomatisch aussieht, können Sie auch len(myDictionary)
auf Null testen oder set(myDictionary.keys())
für eine leere Menge oder einfach auf Gleichheit mit {}
testen.
Die isEmpty-Funktion ist nicht nur unnötig, sondern Ihre Implementierung hat auch mehrere offensichtliche Probleme, die ich erkennen kann.
- Die Anweisung
return False
ist um eine Ebene zu tief eingerückt. Sie sollte außerhalb der Schleife und auf der gleichen Ebene wie die for
-Anweisung sein. Als Ergebnis wird Ihr Code nur einen willkürlich ausgewählten Schlüssel verarbeiten, wenn ein Schlüssel existiert. Wenn ein Schlüssel nicht existiert, gibt die Funktion None
zurück, was in das boolean False umgewandelt wird. Autsch! Alle leeren Wörterbücher werden als Fehlinformationen klassifiziert.
- Wenn das Wörterbuch nicht leer ist, wird der Code nur einen Schlüssel verarbeiten und dessen Wert als Boolean zurückgeben. Sie können nicht einmal davon ausgehen, dass derselbe Schlüssel bei jedem Aufruf evaluiert wird. Es wird also falsche positive Ergebnisse geben.
- Angenommen, Sie korrigieren die Einrückung der Anweisung
return False
und bringen sie außerhalb der for
-Schleife. Was Sie dann erhalten, ist das Boolean-ODER aller Schlüssel oder False
, wenn das Wörterbuch leer ist. Selbst dann haben Sie falsche positive und falsche negative Ergebnisse. Führen Sie die Korrektur durch und testen Sie gegen das folgende Wörterbuch als Nachweis.
myDictionary={0:'null', '':'Leerer String', None:'None Wert', False:'Boolean False Wert', ():'Leeres Tuple'}