Kapitel 21
Fehler finden und vermeiden
582
faktorzerlegung im letzten Abschnitt? Hier musste zuerst das Produkt aller Zahlen einer
Liste berechnet werden und dann kam erst
assert.
Mit einer einfachen
if-Anweisung der allgemeinen Form
kann man erzwingen, dass der Test nur dann erfolgt, wenn das Programm im Debugging-
Modus gestartet worden ist.
Dabei ist
__debug__ eine boolesche Variable, die zwar gelesen, aber innerhalb des Skripts
nicht verändert werden kann (Read-only-Variable). Als Default trägt
__debug__ den Wert
True. Das Programm läuft dann im Debugging-Modus.
Zum Ausprobieren: Überprüfen Sie im interaktiven Modus den Wert von
__debug__:
Wenn das Skript im optimierten Modus ausgeführt wird, hat
__debug__ den Wert False.
Testen Sie das folgende Skript:
Starten Sie das Skript über die Kommandozeile im optimierten Modus:
21.3 Ausnahmen gezielt auslösen
Mit einer raise-Anweisung können Sie beim Test einer Vor- oder Nachbedingung Aus-
nahme-Ereignisse auslösen. Das Format ist:
# Prüfe Nachbedingung
produkt = 1
for i in fak: produkt *= i
assert produkt == zahl
if __debug__:
teste Bedingung
>>> __debug__
True
#debug_test1.py
if __debug__:
print("Ich bin im debug-Modus")
else:
print("Ich bin im optimierten Modus")
> python -O debug_test1.py
Ich bin im optimierten Modus
raise Exception-Name (assoziierter Wert)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.