Ich habe ja gestern schon erzählt, wie angetan ich von den Logik-Strukturen in Python bin. Richtig spannend wird Logik in der Programmierung ja aber erst dann, wenn man nicht nur Wahrheit oder Unwahrheit eines Ausdrucks abfragt, sondern logische Ausdrücke miteinander verknüpft. Und auch hier hat Python ein paar Nettigkeiten zu bieten.
AND
Wie Python den bool’schen Operator AND verarbeitet an folgendem Beispiel:
ausdruckC = ausdruckA and ausdruckB
- Wenn ausdruckA unwahr ist, wird er zurückgegeben -> ausdruckC ist unwahr, wie gewünscht
- Wenn ausdruckA wahr ist, wird ausdruckB zurückgegeben -> falls ausdruckB wahr ist, wird ausdruckC wahr, falls nicht, nicht. Wie gewünscht.
OR
OR wird ähnlich raffiniert verarbeitet:
ausdruckC = ausdruckA or ausdruckB
- Wenn ausdruckA wahr ist, wird er zurückgegeben -> ausdruckC ist wahr, wie gewünscht
- Wenn ausdruckA unwahr ist, wird ausdruckB zurückgegeben -> falls ausdruckB wahr ist, wird ausdruckC wahr, falls nicht, nicht. Wie gewünscht.
Schick oder?
Man kann diese Verknüpfungen wie gewohnt verwenden, kann aber auch mit Python sehr schlanke Bedingungen formulieren. Nehmen wir mal das Beispiel von gestern, und schreiben eine Abfrage, in der Überprüft werden soll, ob das Attribut bereits einen Wert hat. Falls ja, soll dieser zurückgegeben werden, ansonsten soll 1 zurückgegeben werden.
In Java müssten wir das ganze folgendermaßen lösen:
if(object.attributeHasValue()){ return object.getAttribute(); } else { return 1; }
In Python können wir schreiben:
return object.attributeValue() or 1
Hach wie nett!