Python: Kontrollstrukturen
Python stellt eine ganze Reihe von Kontrollstrukturen zur Verfügung mit denen der Programmablauf kontrolliert und gesteuert werden kann.Bedingungen
Die vielleicht bekannteste Anweisung ist dieif
-Anweisung, z.B.:
>>> if x < 0:
... x = 0
... print 'Negativ; auf null geaendert'
... elif x == 0:
... print 'Zero'
... elif x == 1:
... print 'Single'
... else:
... print 'More'
...
elif
-Teile geben, und der else
-Teil ist optional. Das Schlüsselwort elif
ist eine Kurzschreibweise für else if
und ist nützlich, um exzessive Einrückungen zu vermeiden. Eine Sequenz der Art if...elif...elif...
ist ein Ersatz für switch
- oder case
-Anweisungen in anderen Sprachen.
Schleifen
Schleifen ermöglichen es, beliebigen Programmcode mehrfach zu wiederholen ohne dass dieser jedes mal neu notiert werden muss.while-Anweisung
Die Syntax derwhile
-Schleife dürfte aus der einen oder anderen Programmiersprache bekannt sein; Python macht hier keine Ausnahme. Beispiel:
while not quit:
print 'Hallo!'
...
not quit
im obigen Beispiel) wahr ist. In Python gilt, ähnlich wie in C, jeder Wert außer 0
und None
als wahr.
for-Anweisung
Diefor
-Schleife iteriert über die Elemente einer Sequenz:
for x in [1, 2, 3, 4]:
print x
for
-Schleife ist die eingebaute Funktion range()
sehr praktisch. Sie generiert eine Sequenz, die einer arithmetischen Aufzählung entspricht:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5, 10)
[5, 6, 7, 8, 9]
>>> range(0, 20, 5)
[0, 5, 10, 15]
for
-Beispiel lässt sich also kürzer auch so schreiben:
for x in range(1, 5):
print x
a = ['A', 'silly', 'sentence']
for x in a[:]: # Slice-Kopie von a erzeugen
if len(x) > 3:
a.insert(0, x)
Funktionen
Funktionen werden durch das Schlüsselwortdef
eingeleitet, darauf folgt der Funktionsname und die Parameter in Klammern. Die Syntax erlaubt Vorgabewerte. Diese werden durch ein Gleichheitszeichen an den Parameternamen angehängt. Beispiel:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):
while 1:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return 1
if ok in ('n', 'no', 'nop', 'nope'): return 0
retries = retries - 1
if retries < 0: raise IOError, 'refusenik user'
raise
(Zeile 7), das eine Exception auslöst. Die Argumente, die mit Vorgabewerten belegt sind, müssen beim Aufruf nicht angegeben werden, so sind alle Folgenden Aufrufe zulässig:
ask_ok('Do this [y/n]? ')
ask_ok('Do this [y/n]? ', 100)
ask_ok('Do this [y/n]? ', 100, 'y or n, please!')
return
-Anweisung beendet die Funktion, wobei das Argument von return
der Rückgabewert der Funktion ist. Wird die Funktion ohne return
beendet, so ist der Rückgabewert, wie bereits erwähnt implizit das spezielle Objekt None
.In Python können Funktionen nicht nur auf oberster Ebene definiert werden, sondern es sind auch lokale und anonyme Funktionen möglich. Lokale Funktionen sind zum Beispiel für Hilfsfunktionen praktisch, da sie Zugriff auf die Variablen (also auch Parameter) der äußeren Funktion haben:
def foo(x):
def times_x(y):
return x * y
return times_x(5)
Exceptions
Python unterstützt Exceptions. Sie signalisieren einen zur Laufzeit auftretenden Fehler, der nicht fatal sein muss (er kann abgefangen werden). Die meisten Exceptions werden aber nicht abgefangen und resultieren in Meldungen wie diesen:>>> 10 * (1/0)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ZeroDivisionError: integer division or modulo by zero
>>> 4 + spam*3
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'spam' is not defined
>>> '2' + 2
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: cannot concatenate 'str' and 'int' objects
Exceptions behandeln
Ein Beispiel zur Exception-Behandlung:>>> numbers = [0.3333, 2.5, 0, 10]
>>> for x in numbers:
... print x,
... try:
... print 1.0 / x
... except ZeroDivisionError:
... print '*** has no inverse ***'
...
0.3333 3.00030003
2.5 0.4
0 *** has no inverse ***
10 0.1
try:...except:
-Block entspricht try...catch...
in C++ und Java . Er wird wie folgt abgearbeitet:Zuerst wird der
try
-Block abgearbeitet. Tritt keine Exception auf, so wird der except
-Block übersprungen, und die Ausführung nach dem try...except
fortgesetzt. Wenn während der Ausführung des try
-Blocks eine Exception auftritt, so wird der Rest des Blocks übersprungen und mit dem except
-Block fortgesetzt, sofern der Typ der Exception zu dem in der except
-Anweisung passt, danach wird die Ausführung nach dem try...except
fortgesetzt.Wenn eine Exception auftritt, die nicht zur
except
-Anweisung passt, wird ein weiter außen liegender try...except
-Block gesucht. Das gilt nicht nur "textuell", lokal in einer Funktion, sondern erstreckt sich auch auf aufrufende Funktionen - war während des Aufrufs ein try...except
aktiv, so wird auch dieses überprüft. Wird kein passender try...except
-Block gefunden, so resultiert die Exception in einer Fehlermedung wie oben angeführt.
Exceptions auslösen
Ausgelöst werden Exceptions mitraise
. Beispiel:
if something_gone_wrong:
raise RuntimeError, 'Something has gone wrong'
raise
-Anweisung sind im allgemeinen eine Klasse optional gefolgt von Argumenten.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Weiterlesen: ⯈ Objektorientierte Programmierung
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project