Kurs
Die assert-Anweisung in Python ist ein Werkzeug, um grundlegende Annahmen in deinem Code festzuhalten. Sie hilft Entwicklerinnen und Entwicklern dabei, Erwartungen im Code zu prüfen. In diesem Tutorial lernst du Syntax, Einsatz und Anwendungsfälle der assert-Anweisung kennen – inklusive ihrer Rolle beim Debugging und bei der Fehlererkennung. Mit sicherem Umgang der Python-assert-Anweisung bringst du dich einen Schritt näher an dein Ziel, ein:e Python-Programmierexpert:in zu werden.
Die Kurzfassung: So schreibst du Python-Assertions
Die Syntax der assert-Anweisung ist simpel:
assert condition, message
Hier steht condition für den zu prüfenden Ausdruck, während message eine optionale Fehlermeldung ist, die erscheint, wenn die Assertion fehlschlägt.
Hier sind ein paar Assertions, die du in deinem Python-Code ausprobieren kannst. Im ersten Fall ist der Ausdruck 3<4>5 logisch falsch, daher wirft Python einen AssertionError mit unserer Nachricht: "Math does not work that way." Im zweiten Fall ist der Ausdruck 0==0 eine Tautologie, daher erscheint die Nachricht "This shouldn't throw an error." nicht.
assert 3<4>5, "Math does not work that way."
assert 0==0, "This shouldn't throw an error."
Überblick über Pythons assert-Anweisung
Schauen wir uns Pythons assert-Anweisung genauer an – wie und warum sie verwendet wird. Am Ende dieses Tutorials weißt du genau, wie du die assert-Anweisung in Python einsetzt.
Was sind Python-Assertions?
Assertions sind im Programmieren Konstrukte, mit denen die Wahrhaftigkeit von Bedingungen im Code geprüft wird. Anders gesagt: Es sind Bedingungen, die das Programm erfüllen muss – sonst wird ein Fehler ausgelöst. Python setzt diese Assertions mit sehr wörtlicher Syntax um: Mit der assert-Anweisung definieren wir solche Annahmen.
Wann du Python-Assertions einsetzen solltest
Assertions sind unschlagbar beim Debugging, zum Validieren von Annahmen und um sicherzustellen, dass sich dein Code unter bestimmten Bedingungen wie erwartet verhält. Du sagst dem Computer damit, was du erwartest, und bittest ihn, anzuhalten, wenn etwas davon abweicht. Das ist besonders hilfreich, wenn du ein neues Programm baust, ein Feature hinzufügst oder eine bestehende App aktualisierst.
Assertions spielen ihre Stärken aus, wenn Vorbedingungen, Nachbedingungen oder Invarianten im Code sichergestellt werden müssen. Sie wirken wie Leitplanken: Wenn bestimmte Bedingungen verletzt werden, stoppt der Code, wodurch potenzielle Bugs früh erkannt werden.
Platziere Assertions gezielt im Code, um Fehler nahe an ihrer Ursache zu fangen – das vereinfacht das Debugging. Der Python Developer-Lernpfad von DataCamp ist ein starker Einstieg für angehende Entwickler:innen aller Niveaus, um funktionale Programmierkompetenzen mit Übungen von Grundlagen bis Fortgeschritten zu trainieren.
Wann du Python-Assertions nicht einsetzen solltest
So wertvoll Assertions in der Entwicklung sind, es gibt Situationen, in denen ihr Einsatz unpassend ist.
Wichtig zu wissen: In produktiven Builds können Assertions global deaktiviert sein. Verlass dich daher nicht auf Assertions, um Laufzeitprobleme zu behandeln, zum Beispiel falsche Nutzereingaben. Nutze sie stattdessen für Entwicklungsprobleme, etwa um logische oder mathematische Unstimmigkeiten aufzudecken.
Für Fehlermanagement und Datenvalidierung in produktivem Code solltest du Ausnahmebehandlung einsetzen. So kann sich der Code kontrolliert von Fehlern erholen, relevante Informationen fürs Debugging protokollieren und Nutzer:innen sinnvolles Feedback geben.
Mehr zu Fehlerfinden und -beheben erfährst du in unserem Tutorial Exception and Error Handling in Python oder im Kurs Associate Data Scientist in Python.
Häufige Fehler und Irrtümer bei der assert-Anweisung in Python
Ein häufiger Fehler beim Einsatz von assert in Python ist die Verwendung von Klammern. Das ist nachvollziehbar, weil viele Funktionen Klammern nutzen und es sich schnell automatisiert. Allerdings ist assert in Python keine Funktion, sondern hat eine eigene Syntax. Wenn du Klammern setzt, läufst du in der Regel in Syntaxwarnungen und logische Fehler.
SyntaxWarning: assertion is always true, perhaps remove parentheses?
Ein weiterer häufiger Fehler ist, das Komma nach der Bedingung zu vergessen. Das führt zu einem Syntaxfehler.
SyntaxError: invalid syntax
Die Ausnahme AssertionError
Eine AssertionError-Exception wird immer dann ausgelöst, wenn die Bedingungen einer Assertion verletzt werden. Dieser Fehler stoppt die Programmausführung; eine optionale Fehlermeldung, die du gesetzt hast, wird angezeigt. Da Assertions vor allem zum Testen deines Codes in der Entwicklung gedacht sind, solltest du eine AssertionError-Meldung in Python ernst nehmen. Sie kann auf einen grundlegenden Fehler im Code hinweisen.
Praktische Anwendungsfälle
Eine assert-Anweisung lässt sich in vielen praktischen Szenarien in Python einsetzen. Unser interaktiver Kurs Writing Functions in Python bietet zahlreiche Übungen, mit denen du Routine aufbaust. Hier sind zwei Beispiele.
assert innerhalb einer Funktion nutzen
Praktisch ist es, Assertions direkt in Funktionen einzubauen. So stellst du sicher, dass sich deine Funktionen wie vorgesehen verhalten.
def divide(a, b):
assert b != 0, "Division by zero!"
return a / b
# Test cases
print(divide(10, 2)) # Output: 5.0
print(divide(8, 0)) # AssertionError: Division by zero!
assert mit unittest verwenden
Tests sind ein zentraler Schritt im Entwicklungsprozess. Unittest ist eine Bibliothek, mit der du deinen Code effizient testest – sie nutzt dafür assert-Aussagen. So verwende ich assert am häufigsten. Hier ein Beispiel, wie du es in unserem Kurs Introduction to Testing in Python finden könntest.
import unittest
class TestMathFunctions(unittest.TestCase):
def test_addition(self):
self.assertEqual(2 + 2, 4)
def test_subtraction(self):
self.assertEqual(5 - 3, 2)
def test_division(self):
self.assertRaises(ZeroDivisionError, divide, 10, 0)
if __name__ == '__main__':
unittest.main()
Fazit
Die assert-Anweisung in Python ist ein wichtiges Werkzeug, um während der Entwicklung zu debuggen und Bedingungen im Code zu verifizieren. Sie ist einfach und effektiv, sollte aber in der Produktion nicht als Sicherheitsnetz dienen, da sie in kompiliertem Code deaktiviert sein kann. Für robustes Fehlermanagement setze stattdessen auf Ausnahmebehandlung.
Lies bei offenen Fragen gern unser Tutorial zu Coding Best Practices and Guidelines.
Ich bin promoviert und habe 13 Jahre Erfahrung in der Arbeit mit Daten in der biologischen Forschung. Ich entwickle Software in verschiedenen Programmiersprachen, darunter Python, MATLAB und R. Meine Leidenschaft ist es, meine Liebe zum Lernen mit der Welt zu teilen.
