Der Interpreter, eine interaktive Shell
Zu den Begriffen Interaktiv und Shell
Interaktiv kommt aus dem Lateinischen "inter agere". Das Verb agere bedeutet unter anderem "tun",
"treiben", "betreiben", "handeln" und inter bezeichnet die zeitliche und örtliche Position zu Dingen
und Ereignissen,
also "zwischen" zwei oder "inmitten" (oder "unter") vielen Objekten, Personen oder Ereignissen sein.
Aso heisst "inter agere" dazwischen handeln. In diesem Sinne steht die interaktive Shell zwischen dem
Anwender und dem Betriebssystem (Linux, Unix, Windows oder anderen) bzw. dem zu interpretierenden
Programm (z.B. Python). Die interaktive Shell steht aber auch zeitlich zwischen den einzelnen Aktionen,
d.h. zwischen den einzelnen Befehlen und Kommandos. Der Benutzer gibt einen Befehl ein, die Shell führt diesen
unverzüglich aus, liefert sofort das Ergebnis und wartet dann auf den nächsten Befehl.
In Englisch steht das Wort "shell" für eine Schale, einen Panzer oder ganz allgemeine eine Hülle oder Schutzhülle. "Shell" bezeichnet auch ein Schneckenhaus und das Gehäuse, das eine Muschel umschliesst. Ebenso liegt eine Shell auch zwischen einem Betriebssystem und dem Beutzer. Wie eine Muschelschale schützt sie zum einen das Betriebssystem vor dem Benutzer und gleichzeitig erspart sie dem Benutzer die Benutzung der "primitiven" und schwer verständlichen Basisfunktionen, indem es ihm komfortable Befehle zur Kommunikation mit dem Computer zur Verfügung stellt.
Auch die Programmiersprache Python bietet dem Anwender eine komfortable Kommandozeilen Schnittstelle, die sogenannte Python-Shell, manchmal auch als interaktive Python-Shell bezeichnet. Man könnte meinen, dass es sich bei dem Begriff "interaktive Shell" um eine Tautologie handelt, da ja, so wie oben beschrieben, Shells immer interaktiv sind. Dies ist jedoch nicht so: Es gibt auch vor allem im Umfeld von Linux und Unix Shells, die als Subshell aufgerufen werden und nicht interaktiv ausgeführt werden.
Benutzung der Python-Shell
Die meisten Linux-Distributionen kommen mit einem vorinstallierten Python und damit auch mit einer interaktiven Python Shell. Der Interpreter befindet sich überlicherweile im Pfad /usr/bin/ (aber manchmal auch in /usr/local/bin).
Man kann Python im interaktiven Modus aufrufen, indem man den Interpreter in einer Linux-Shell (Bash-Shell)
ohne Parameter aufruft. Also
python
Python meldet sich mit Informationen über die installierte Version:
$ python Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>Wenn man genauer auf die obige Ausgabe schaut, das heißt auf die Vesionsnummer, erkennt man ein Problem. Wir wollten uns ja mit Python 3 beschäftigen, aber Python 2.6.5 ist installiert. Diese Situation ergibt sich beispielsweise bei einer Ubuntu 10.10 Distribution. In diesem Fall muss man Python nachinstallieren und anschließend mit python3 den interaktiven Interpreter starten:
$ python3.1 Python 3.1.2 (r312:79147, Sep 27 2010, 09:57:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Der Interpreter steht nun mit dem sogenannten Eingabeprompt (>>>) für Eingaben bereit. Man kann jetzt beliebigen Python-Code eingegeben, der nach dem Quittieren mit der Eingabetaste (Return-Tate) sofort ausgeführt wird. So kann man sehr schnell interaktiv ein Hello-World-Programm "schreiben":
>>> print("Hello World")
Hello World
>>>
print verlangt übrigens im Gegensatz zu Python 2.x zwingend eine Klammer. Man wollte damit den
Charakter von print als Funktion betonen.
Der interaktive Interpreter erlaubt noch eine Bequemlichkeit, die innerhalb eines Python-Skriptes nicht zulässig ist. Man kann einfach print weglassen und nur den Ausdruck hinschreiben. Er wird dann automatisch "gedruckt"
>>> "Hello World" 'Hello World' >>>
Verlassen der Python-Shell
Wir haben zwar gerade erst damit begonnen in der Python-Shell "herumzuspielen", dennoch wollen sicherlich
einige das Programm bereits verlassen. Ctrl-C, was vielen Linux- und Unix-Benutzern häufig als erstes
einfällt, funktioniert nicht! Den Python-Interpreter kann man per Kontrollsequenz nur mit Ctrl-D wieder
verlassen.
Alternativ dazu, kann man die Python-Shell mittels Eingabe der Funktion exit() verlassen.
Die Klammern hinter exit sind zwingend notwendig ab Python 3.
Python-Shell als "Taschenrechner"
Die interaktive Python-Shell kann man auch als einen simplen "Taschenrechner" nutzen. Man tippt einfach den gewünschten Ausdruck nach dem Prompt ein, und betätigt die Eingabetaste.>>> 4.567 * 8.323 * 17 646.18939699999999 >>>Python kennt, wie die meisten anderen Programmiersprachen, die Regel "Punktrechnung geht vor Strichrechnung", wie wir im folgenden Beispiel sehen können:
>>> 1 + (42 * 2) 85 >>> 1 + 42 * 2 85 >>>Der jeweils letzte Ausgabewert wird vom Interpreter in einer speziellen Variablen automatisch gespeichert. Der Name der Variable ist einfach ein Unterstrich (underscore), also "_".
Das Ergebnis der letzten Berechnung kann man sich also wieder ausgeben lassen:
>>> _ 85 >>>Der Unterstrich kann im Prinzip wie eine normale Variable benutzt werden:
>>> _ * 3 255 >>>
Dies gilt allerdings nicht in einem Python-Skript oder Python-Programm!
Benutzung von Variablen
In der Python-Shell kann man auch ganz einfach Variablen benutzen. Wenn Sie genau wissen wollen, was es mit Variablen und Datentypen auf sich hat, empfehlen wir in unserem Kapitel über Datentypen und Variablen weiter zu lesen. Das folgende Beispiel wendet sich an Benutzer, die bereits ein wenig Erfahrung mit Programmierung haben.Man kann also ganz einfach Werte in Variablen speichern. Variablenname bedürfen keiner besonderen Kennzeichnung wie in anderen Sprachen, wie zum Beispiel das Dollarzeichen in Perl:
>>> maximal = 124 >>> breite = 94 >>> print(maximal - breite) 30 >>>
Mehrzeilige Anweisungen
Bis jezt haben wir noch nicht über mehrzeilige Anweisungen gesprochen. Anfänger werden hier vielleicht Probleme haben, da noch einige Grundlagen zum Verständins fehlen, und sollten deshalb besser mit den folgenden Kapitel weitermachen.Wir demonstrieren, wie die interaktive Shell mit mehrzeiligen Anweisungen, wie zum Beispiel For-Schleifen umgeht.
>>> l = ["A",42,78,"Just a String"] >>> for character in l: ... print(character) ... A 42 78 Just a String >>>
Achtung: Nachdem man die die Zeile "for character in l:" eingetippt hat, wartet die interaktive Shell im folgenden auf eingerückte Zeilen. Dies teilt uns die Shell mit einem neuen Promt mit: Statt dem gewohnten ">>> " erhalten wir nun eine Folge von drei Punkten "... ". Wir müssen also alle Anweisungen, die mit der Schleife ausgeführt werden sollen um die gleiche Anzahl von Leerzeichen einrücken, mindestens ein Leerzeichen! Wenn wir fertig sind, müssen wir nach der letzten Zeile noch einmal zusätzlich die Eingabetaste drücken.

