Ich beschäftige mich in letzter Zeit ein wenig mit der Programmiersprache Python. Ich werde zwar vermutlich Java immer verbunden bleiben, aber gerade als GNOME-User, denkt man sich immer wieder:
Hach, was wäre es nett, Python zu beherrschen!
Also begann ich, ein wenig mit Python herumzuspielen und ein kleines Tool für meine Frau zu programmieren. Mal davon abgesehen, dass ich erstaunt bin, wie schnell ich “working code” mit einer Programmiersprache hervorbringen konnte, die ich zu diesem Zeitpunkt erstmals verwendete, dachte ich immer wieder: Hach, wie nett!
Einer dieser Momente war, als ich feststellte, wie schlank und unkompliziert Logikstrukturen in
Python abgebildet werden können.
Jeder Wert in Python kann als logischer Wert verwendet werden. Die bool’schen Werte true
und false
werden in Python also gar nicht benötigt. Logische Wahrheit wird in Python schon durch Datentypen mit Inhalt repräsentiert. z.B. 1, “Hirnbloggade”, [Listenelement], 4.5 etc.
Logische Unwahrheit wird durch quasi “leere” Werte wie z.B. None, 0, [] oder “” repräsentiert.
Das ermöglicht, dass man oft zwei Fliegen mit einer Klappe schlagen kann.
Wenn ich ein Objekt z.B. sowohl darauf untersuchen muss, ob ein bestimmtes Attribut des Objekts bereits einen Wert erhalten hat, als auch mir den Wert des Attributes liefern lassen möchte, brauche ich in Java, wenn ich sauber und übersichtlich programmieren will, mehrere Funktionen. Im Beispiel gehen wir der Einfachheit halber davon aus, dass es sich um ein Attribut vom Typ Integer handelt, der bei der Konstruktion des Objektes mit dem Wert 0 initialisiert wird. Sinnvolle Werte sollen aber größer als 0 sein.
Klassencode in Java:
... public boolean attributeHasValue() { return (attribute == 0); } public int getAttribute() { return this.attribute; } ...
Methodenaufruf in Java:
if(object.attributeHasValue()) { x = object.getAttribute(); }
In Python kann ich den selben Vorgang mit einer Funktion realisieren:
Klassencode in Python:
... def attributeValue(self): return self.attribute ...
Und der Methodenaufruf in Python:
if object.attributeValue(): x = object.attributeValue()
Hach, wie nett!
Pingback: Python-Nettigkeiten: Logische Verknüpfungen « Hirnbloggade