Python-Referenz: Anweisungen
Aus Wikibooks
Inhaltsverzeichnis |
[Bearbeiten] Allgemeine Anweisungen 
[Bearbeiten] Die import-Anweisung 
[Bearbeiten] Die print-Anweisung 
Die print-Anweisung druckt etwas auf den Textbildschirm und gibt einen Zeilenvorschub aus.
print "Hallo, Welt!"
Soll der Zeilenvorschub unterdrückt werden, so kann das Komma verwendet werden. Die beiden folgenden Anweisungen drucken genau eine Zeile aus:
print "Spam", print "und Eggs"
Man beachte, daß das Komma ein Leerzeichen einfügt.
[Bearbeiten] Die def-Anweisung 
[Bearbeiten] Die lambda-Anweisung 
[Bearbeiten] Die class-Anweisung 
[Bearbeiten] Die del-Anweisung 
[Bearbeiten] Die exec-Anweisung 
[Bearbeiten] Die global-Anweisung 
Muss man Variablen außerhalb der aktuellen Methode/Funktion verändern, so benötigt man global:
x = 3 def Parrot(): global x x = 4 Parrot() print x
Ohne global wäre eine neue lokale Variable innerhalb der Funktion Parrot() erzeugt worden.
global greift auch bei ineinandergeschachtelten Funktionen. Es wird jeweils die globalste Variable referenziert, die im aktuellen Modul vorliegt:
NumberOfParrots = 3 def Parrot(): NumberOfParrots = 3 def DeadParrot(): global NumberOfParrots NumberOfParrots -= 1 DeadParrot() print "Parrot sagt, es leben", NumberOfParrots, "Papageien." print "Leben noch alle", NumberOfParrots, "Papageien?" Parrot() print "Es leben noch", NumberOfParrots, "Papageien!"
[Bearbeiten] Bedingte Ausführung 
[Bearbeiten] Die if-Anweisung 
In Abhängigkeit von einer Bedingung wird in einem Programm verzweigt.
Name = raw_input("Bitte Namen eingeben: ") if Name != '': print "Hallo", Name
Die print-Anweisung wird nur ausgeführt, wenn die Bedingung (Name != "") wahr ist.
[Bearbeiten] Die else-Anweisung 
Ist die Bedingung, die if abfragt, nicht erfüllt, kann mit der else-Anweisung dazu passend Code ausgeführt werden:
Name = raw_input("Bitte Namen eingeben: ") if Name != '': print "Hallo", Name else: print "Sie haben wohl keinen Namen, was?"
[Bearbeiten] Die elif-Anweisung 
Feiner verzweigen lässt sich mit elif. Hier können weitere Abstufungen der Abfrage unternommen werden.
Name = raw_input("Bitte Namen eingeben: ") if Name == '': print "Sie haben wohl keinen Namen, was?" elif Name == "test": print "Das ist doch nicht ihr richtiger Name, oder?" else: print "Hallo,", Name, "!"
[Bearbeiten] Schleifen 
[Bearbeiten] Die while-Schleife 
Die while-Schleife wiederholt eine Anweisungsfolge so lange, wie eine Bedingung erfüllt ist. Damit lässt sich eine Endlosschleife leicht implementieren:
while True: print "Endlos..."
Die folgende while-Schleife wird gebraucht, um hartnäckig nach dem Namen zu fragen. Beendet wird sie erst, wenn ein Name eingegeben wurde:
Name = '' while Name == '': print "Wie heisst Du? ", Name = raw_input()
[Bearbeiten] Die for-Schleife 
Die for-Schleife wird gebraucht, wenn die Anzahl der Wiederholungen von vornherein bekannt ist. Das folgende Beispiel schreibt die Ziffern 0 bis 4 auf den Bildschirm:
for i in xrange(5): print i
Ebenfalls lässt sich über ein Tupel oder eine Liste iterieren, die Ausgabe sind die einzelnen Listenelemente:
for elem in ['spam', 'eggs']: print elem
Nützlich in dem Zusammenhang ist, daß in der for-Schleife mehrere Variablen verwendet werden können:
for num, elem in enumerate(['spam', 'eggs']): print num, elem
[Bearbeiten] Kontrollfluss 
[Bearbeiten] Die pass-Anweisung 
Die pass-Anweisung dient alleine als Platzhalter für Stellen im Code, wo syntaktisch eine Anweisung nötig ist aber semantisch nichts geschehen soll. Die pass-Anweisung ist auf Grund der Defintion von Code-Blöcken in Python notwendig. In C oder Java würde anstelle von pass beispielsweise ein ; oder { } stehen.
Beispiele:
class Klasse(object): pass
liste = [1,2,3] try: liste[10] except IndexError: pass
[Bearbeiten] Die continue-Anweisung 
Die continue-Anweisung darf nur innerhalb von while- und for-Schleifen vorkommen und wird dabei verwendet, die restlichen Anweisungen des Schleifendurchlaufs abzubrechen, um direkt mit dem nächsten Durchlauf der direkt umschließenden Schleife fortzufahren. Zu beachten ist allerdings, dass continue nicht innerhalb eines Code-Blocks einer finally-, def- oder class-Anweisung stehen darf, selbst wenn sich diese in einer Schleife befinden.
Beispiele:
# gibt alle geraden Zahlen zwischen 1 und 10 aus for i in range(1,11): if i % 2: continue print i
[Bearbeiten] Die break-Anweisung 
[Bearbeiten] Die return-Anweisung 
[Bearbeiten] Die yield-Anweisung 
Mit der yield-Anweisung lassen sich Generatoren erzeugen. Ein Generator gibt bei jedem Aufruf einen Wert zurück, ohne dass eine Liste erzeugt wird oder das Argument einer Funktion verändert wird. Da man über die Werte, die ein Generator erzeugt iterieren kann, nennt man ihn auch Iterator.
Das Programm gibt einige Zahlen aus:
def generator(von, bis, schritt): x = von while x < bis: yield x # hier kann x abgefragt werden x += schritt # dieser Generator kann über die Werte 0.1 ... 0.19 iterieren MyGen1 = generator(0.1, 0.2, 0.01) # dieser Generator kann über die Werte -1.0 ... 0.9 iterieren MyGen2 = generator(-1.0, 1.0, 0.1) for i in MyGen1: print i for i in MyGen2: print i
[Bearbeiten] Ausnamhebehandlung 
[Bearbeiten] Die try-Anweisung 
[Bearbeiten] Die raise-Anweisung 
[Bearbeiten] Die assert-Anweisung 
Mit assert(Bedingung) werden im Programm Zusicherungen eingeführt. Sind diese Zusicherungen nicht erfüllt, so wird eine Ausnahme namens AssertionError geworfen.
x = raw_input("Bitte etwas eingeben: ") assert(x != '') # Hier soll sichergestellt werden, daß keine leere Eingabe erfolgte. print x