Bist du ein Programmierer? Wenn dies der Fall ist, ist das Debuggen eine wesentliche Fähigkeit, unabhängig von der Sprache, in der Sie programmieren. In diesem Artikel erfahren Sie, wie Sie die verwenden Aussage behaupten in Python für effektives Debuggen.
Wenn Sie an einem Projekt arbeiten, definieren Sie mehrere Module. Dazu gehören Funktionen, Klassendefinitionen und mehr. Und Sie werden wahrscheinlich aufgrund eines Fehlers in der Implementierung auf Fehler oder unerwartete Ergebnisse stoßen. Assert-Anweisungen sind beim Debuggen eines solchen Codes hilfreich.
In diesem Tutorial lernen wir die Syntax zur Verwendung der assert-Anweisung kennen, gefolgt von Codebeispielen, um sie in Aktion zu sehen. Wir werden auch sehen, was Behauptungsfehler sind und wie wir sie verwenden können, um die Fehler im Code während der Entwicklung zu beheben.
Lassen Sie uns beginnen!
How to Use the Assert Statement in Python
Wir werden die Syntax lernen, um die assert-Anweisung zu verwenden, und dann mit dem Codieren einiger Beispiele fortfahren.
Syntax der Assert-Anweisung
Beginnen wir mit der Syntax, um die assert-Anweisung in Python zu verwenden:
assert expression, message
Hier
expression
ist ein beliebiger gültiger Python-Ausdruck, der ausgewertet werden soll. Dies kann eine Bedingung für den Wert einer Variablen, den Wahrheitswert einer Variablen, den Rückgabewert einer Funktion und mehr sein.- Solange die
expression
bewertet zuTrue
, löst die assert-Anweisung keinen Fehler aus und gibt nichts zurück. Dies zeigt an, dass das Programm wie erwartet funktioniert. - Besitzt das
expression
ist nicht mehrTrue
, einAssertionError
Ausnahme wird ausgelöst. message
ist ein optional Schnur. Sie können eine Meldung angeben, die in der Ablaufverfolgung immer dann angezeigt wird, wenn eineAssertionError
Ausnahme wird ausgelöst.
Lassen Sie uns als Nächstes einige Beispiele programmieren, bei denen uns die assert-Anweisung dabei helfen kann, saubereren und fehlerfreien Code zu schreiben.
Die in diesem Tutorial verwendeten Codebeispiele finden Sie in diesen GitHub-Kern.
Python’s Assert Statement Examples

Betrachten Sie das folgende Beispiel. Angenommen, Sie haben eine discount
Variable in Ihrem Code. Aber Sie möchten, dass sein Wert immer kleiner oder gleich dem ist max_discount
.
Um zu überprüfen, dass Sie nicht versehentlich die eingestellt haben discount
Variable zu einem Wert hinzufügen, können Sie eine Assertion hinzufügen. Der auszuwertende Ausdruck lautet: discount <= max_discount
.
>>> max_discount = 50
>>> discount = 20
>>> assert discount <= max_discount
Hier discount
(20) ist kleiner als max_discount
(50). Die Assert-Anweisung wirft also keinen Fehler aus.
Die AssertionError-Ausnahme
Besitzt das discount
Variable auf einen Wert größer als gesetzt ist max_discount
, ein AssertionError
Ausnahme wird ausgelöst.
>>> discount = 75
>>> assert discount <= max_discount
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
Wir wissen, dass wir mit der assert-Anweisung auch eine optionale Nachrichtenzeichenfolge angeben können.
Lassen Sie uns auch eine Nachrichtenzeichenfolge verwenden, die eine aussagekräftigere Diagnoseinformation liefert. Fügen wir der assert-Anweisung einen Python-F-String hinzu, der auch die Werte von enthält discount
funktioniert max_discount
.
>>> assert discount <= max_discount, f"discount should be at most {max_discount}; got discount = {discount}"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError: discount should be at most 50; got discount = 75
Wie in der Ausgabezelle oben zu sehen, ist die AssertionError
Ausnahme enthält jetzt die Werte der discount
funktioniert max_discount
Variablen.
Debugging and Testing Python Functions with Assert
Beim Definieren von Funktionen können Sie manchmal versehentlich Bugs (logische Fehler) einführen, die verhindern, dass Ihre Funktion wie beabsichtigt funktioniert.

Nehmen wir ein Beispiel. Angenommen, es gibt einen Test in einer Klasse und die Schüler haben die Möglichkeit, eine Bonusfrage zu beantworten. Jeder Student, der die Bonusfrage versucht, erhält 10 zusätzliche Punkte im Test. 😄
Betrachten Sie die folgende Funktion get_final_score
:
- Es nimmt eine aktuelle Punktzahl auf,
score
, und ein boolescher Wertbonus
. - Wenn ein Schüler die Bonusfrage beantwortet hat, wird der Boolean
bonus
isTrue
, und sie erhalten 10 Punkte mehr als ihre aktuelle Punktzahl. - Die Funktion gibt dann die endgültige Punktzahl zurück.
def get_final_score(score,bonus):
if bonus:
score += 10
return score
Machen wir ein paar Aufrufe der Funktion. Das sehen wir bei Scores von 34 und 40 mit bonus
einstellen True
funktioniert False
, die Endnoten sind 44 bzw. 40.
print(get_final_score(34,True))
# 44
print(get_final_score(40,False))
# 40
Die maximale Punktzahl für den Test beträgt jedoch beispielsweise 50. Wenn ein Schüler also 49 Punkte erzielt und auch die Bonusfrage beantwortet hat, funktioniert die Funktion get_final_score
wird die Endnote gerne auf 59 berechnen.
print(get_final_score(49,True))
# 59
Technisch ist es möglich. Aber nehmen wir an, dass ein Student nicht mehr als die maximal mögliche Punktzahl für den Test erreichen kann. 🙂
Lassen Sie uns also a initialisieren max_score
Variable. Und erfassen Sie die zurückgegebene Punktzahl von der Funktion in der final_score
variabel.
Anschließend fügen wir eine Assertion hinzu, die prüft, ob die final_score
ist weniger als die max_score
.
def get_final_score(score,bonus):
if bonus:
score += 10
return score
final_score = get_final_score(47,True)
max_score = 50
assert final_score <= max_score
Wir erhalten jetzt eine AssertionError-Ausnahme für den Funktionsaufruf get_final_score(47,True)
:
Traceback (most recent call last):
File "main.py", line 17, in <module>
assert final_score <= max_score
AssertionError
Jetzt fügen wir der Python-assert-Anweisung einen beschreibenden f-String hinzu:
assert final_score <= max_score,f"final_score should be at most {max_score}; got {final_score}"
Traceback (most recent call last):
File "main.py", line 17, in <module>
assert final_score <= max_score,f"final_score should be at most {max_score}; got {final_score}"
AssertionError: final_score should be at most 50; got 57
Ändern der Funktion
Lassen Sie uns zurückgehen und die Definition von ändern get_final_score
Funktion, um das unerwartete Verhalten zu beheben:
- Die Funktion
get_final_score
nimmt auchmax_score
als ein Parameter. - Wir prüfen ggf
bonus
ist wahr. Wenn True, addieren wir 10 Punkte zur Score-Variablen. - Dann prüfen wir ggf
score
größer ist alsmax_score
. Wenn ja, kehren wir zurückmax_score
. - Ansonsten kehren wir zurück
score
.
Wir haben jetzt dafür gesorgt, dass das Endergebnis immer kleiner oder gleich ist max_score
.
def get_final_score(score,bonus,max_score):
if bonus:
score += 10
if score > max_score:
return max_score
return score
Schreiben Sie als schnelle Übung einige Behauptungen, um zu bestätigen, dass die Funktion jetzt wie erwartet funktioniert.
A Note on AssertionError Exception
Obwohl eine AssertionError-Ausnahme auftritt, wenn der Ausdruck als False ausgewertet wird, sollten wir daran denken, solche Fehler nicht zu behandeln wie Ausnahmen. Gemeint sind wir sollte nicht tun etwas wie das:
try:
<doing this>
except AssertionError:
<do this>
Im vorherigen Beispiel auf get_final_score
, haben wir die Assertion verwendet, um zu prüfen, ob final_score
weniger als max_score
. Dann wir die Funktionsdefinition geändert so dass es keine Behauptungsfehler gibt.
Das ist, was Behauptungen sind für. Sie sind Plausibilitätsprüfungen für Code und helfen beim Schreiben von sauberem Code. Die Ausnahmebehandlung hingegen dient dazu, unerwartete Fehler zur Laufzeit zu antizipieren und zu behandeln. Diese enthalten häufig ungültige Eingabetypen und -werte.
Zusammenfassend sollten Sie die Python-Assert-Anweisung für ein effektives Debugging verwenden und AssertionErrors nicht als Ausnahmen behandeln.
Fazit
Dieses Tutorial hat Ihnen geholfen zu verstehen, wie Sie die Assert-Anweisung in Python verwenden. Hier ist eine Zusammenfassung dessen, was Sie gelernt haben:
- Python-Assert-Anweisungen (Assertionen) nehmen die Form an
assert expression
. Diese prüft, ob dieexpression
isTrue
. Wenn es nicht zu werten istTrue
, einAssertionError
Ausnahme wird ausgelöst. - Sie können das Assert auch mit der Syntax verwenden
assert expression, message
. Dadurch wird die ausgedrucktmessage
Zeichenfolge, wann immer einAssertionError
Ausnahme auftritt. - Sie sollten daran denken, keine Ausnahmebehandlung zu implementieren, um Behauptungsfehler zu behandeln. Und verwenden Sie Zusicherungen als hilfreiches Debugging-Tool für Plausibilitätsprüfungen Ihres Codes.
Als Entwickler helfen Ihnen Behauptungen beim Debuggen. Damit alle einzelnen Bestandteile (Module) des Projekts wie erwartet funktionieren, können Sie schreiben lernen Unit-Tests in Python.
Sehen Sie sich als Nächstes diese Liste an Anfänger-Python-Projekte daran kannst du arbeiten.