if __name__ == "__main__": main()
Es gibt bestimmte feste Variable intern in Python, die mit doppelte Unterstrichen vor und nach dem Namen markiert sind. Eine davon ist __name__, und wenn man das Skript von der Kommandozeile aufruft, ist diese Variable auf “__main__” gesetzt. Auch wenn man das Skript einfach runterschreiben könnte, ist es besser, das so zu schreiben und die Funktionalität in einer Funktion main() zu definieren, und diese wie hier aus dem if aufzurufen. So kann man die Wiederverwendbarkeit des Codes erhöhen.
Ok, wir möchten folgendes ausprobieren: Wir haben eine einfache Klasse Testobject, die sehen wir uns mal zuerst an:
class TestObject: def __init__(self, value, text=""): self.value = value self.text = text def output(self): print self.value, self.text
Die Klassendefinition ist einfach. Die Funktion, die __init__ heißt, ist der Konstruktor. Man sieht auch, dass Klassenfunktionen als erstes Argument self haben müssen. Es werden zwei Klassenvariablen value und text angelegt. Man sieht auch im Funktionaufruf, dass text optional ist, weil es einen Default-Wert hat. Es gibt weitere dieser vorgegebenen Funktionsnamen mit dem __, für Getters und Setters, auch für das ausgeben, aber hier haben wir doch eine eigene Funktion output dafür. Man kann einfach print schreiben und dann Variablen durch Komma hintendranreihen, das schafft er dann, das in einen String zu wandeln und setzt auch automatisch Leerzeichen dazwischen und Zeilenumbrüche ans Ende.
Also mit output kann man value und text des Objektes ausgeben.
Das ganze Skript macht jetzt folgendes: Es legt eine Liste an mit drei Elementen. Dann soll die Funktion doubleList die Anzahl der Elemente verdoppeln, in dem es jedes kopiert, aber bei der Kopie den Wert um eins hochzählt. Aber wenn man die Ausgabe ansieht, fällt auf dass die Objekte nicht kopiert in die Liste eingefügt werden, sondern nur als Referenz.
2
2
6 Hallo
6 Hallo
11 ScienceBlogs
11 ScienceBlogs
Die Zahlen sind gleich, das heißt er hat nur eine Kopie des Objektes, und diese einmal bearbeitet.
So, jetzt ist der Beitrag mit Python-Ranting schon ein bißchen lang geworden, daher mache ich mal Schluss für heute. Im nächsten Teil geht es dann wirklich an die wissenschaftlichen Bibliotheken um SciPy, und vielleicht später auch nochmal systematischer etwas zu Python.
Zur Einführung in die vielfältigen Funktionen von Python empfehle ich das Buch “Dive Into Python” von Mark Pilgrim, das man auch <a href=”https://www.diveintopython.org/>online</a> lesen kann.
Kommentare (10)