In Entwicklung Letztes Updateated:
Teilen:
Cloudways bietet verwaltetes Cloud-Hosting für Unternehmen jeder Größe zum Hosten einer Website oder komplexer Webanwendungen.

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 behaupten statement in Python für effektives Debuggen.

Wenn Sie an einem Projekt arbeiten, definieren Sie mehrere Module. Dazu gehören Funktionen, Klassendefinitionen und mehr. Und aufgrund eines Fehlers in der Implementierung werden Sie wahrscheinlich auf Fehler oder unerwartete Ergebnisse stoßen. Behaupten Sie stateElemente sind beim Debuggen solchen Codes hilfreich.

In diesem Tutorial lernen wir die Syntax zur Verwendung des Assert statement gefolgt von Codebeispielen, um es in Aktion zu sehen. Wir werden auch sehen, was Assertion-Fehler sind und wie wir sie nutzen können, um die Fehler im Code während der Entwicklung zu beheben.

Lassen Sie uns beginnen!

So verwenden Sie den Assert Statement in Python

Wir lernen die Syntax zur Verwendung des Assert statement, und fahren Sie dann mit dem Codieren einiger Beispiele fort.

Syntax des Assert Statement

Beginnen wir mit der Syntax zur Verwendung des Assert statement in Python:

assert expression, message

Hier

  • expression ist jeder gültige Python-Ausdruck, der ausgewertet werden sollateD. 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 auswertenates True, die Behauptung statement gibt keinen Fehler aus und gibt nichts zurück. Dieser Indikatorates, dass das Programm wie erwartet funktioniert.
  • Besitzt das expression ist nicht mehr True, ein AssertionError Ausnahme wird ausgelöst.
  • message ist ein optional Schnur. Sie können eine Meldung angeben, die in der Ablaufverfolgung immer dann angezeigt wird, wenn eine AssertionError Ausnahme wird ausgelöst.

Fahren wir als Nächstes mit dem Codieren einiger Beispiele fort, in denen der Assert-Statement kann uns dabei helfen, saubereren und fehlerfreien Code zu schreiben.

Die in diesem Tutorial verwendeten Codebeispiele finden Sie in dieser GitHub-Kerninhalt.

Python's Assert StateBeispiele

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, ob Sie einen Unfall habenally Stellen Sie das nicht ein discount Um eine Variable einem Wert zuzuordnen, können Sie eine Behauptung hinzufügen. Der auszuwertende Ausdruckate ist: discount <= max_discount.

>>> max_discount = 50
>>> discount = 20
>>> assert discount <= max_discount

Hier discount (20) ist kleiner als max_discount (50). Also die Behauptung statement löst keinen Fehler aus.

Die AssertionError-Ausnahme

Besitzt das discount Die Variable wird auf den Wert gre gesetztater als 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 die Behauptung statement ermöglicht es uns auch, eine optionale Nachrichtenzeichenfolge anzugeben.

Lassen Sie uns auch eine Nachrichtenzeichenfolge verwenden, die mehr gibt descriptLive-Diagnoseinformationen. Zur Behauptung stateFügen wir nun einen Python-F-String hinzu, der auch die Werte von enthält discount und 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 und max_discount Variablen.

Debuggen und Testen von Python-Funktionen mit Assert

Beim Definieren von Funktionen können Sie manchmal versehentlich Fehler (logische Fehler) einführen, die prevverhindern, dass Ihre Funktion wie vorgesehen 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 Wert bonus
  • Wenn ein Schüler die Bonusfrage beantwortet hat, wird der Boolean bonus is True, 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 und 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

Technically, es ist möglich. Gehen wir jedoch davon aus, 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 a hinzu descriptive-F-String zum Python-Assert-Statement:

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 auch max_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 ist grater als max_score. Wenn ja, kehren wir zurück max_score.
  • Anderewise, wir kehren 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.

Ein Hinweis zur AssertionError-Ausnahme

Allerdings tritt eine AssertionError-Ausnahme auf, wenn der Ausdruck ausgewertet wirdates zu False, wir sollten daran denken, solche Fehler nicht zu behandeln Ausnahmen. Gemeint sind wir sollte nicht tun etwas wie das:

try:
    <doing this>
except AssertionError:
    <do this>

In der previous 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 dienen der Plausibilitätsprüfung des Codes und helfen beim Schreiben sauberer Codes. Die Ausnahmebehandlung hingegen muss antizipiert werdenate und unerwartete Fehler zur Laufzeit behandeln. Dazu gehören häufig ungültige Eingabetypen und -werte.

Zusammenfassend lässt sich sagen, dass Sie Pythonassurance st verwenden solltenatement für effektives Debuggen und behandeln Sie AssertionErrors nicht als Ausnahmen.

Schlussfolgerung

Dieses Tutorial hat Ihnen geholfen, die Verwendung von Assert St zu verstehenatement in Python. Hier ist eine Zusammenfassung dessen, was Sie gelernt haben:

  • Python behauptet stateAussagen (Behauptungen) nehmen die Form an assert expression. Diese prüft, ob die expression is True. Wenn es nicht ausgewertet wirdate zu True, ein AssertionError Ausnahme wird ausgelöst.
  • Sie können das Assert auch mit der Syntax verwenden assert expression, message. Dadurch wird die ausgedruckt message Zeichenfolge, wann immer ein AssertionError 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.

Teilen:
  • Bala Priya C
    Autor
    Bala Priya ist Entwickler und Techniker writer aus Indien mit über drei Jahren Erfahrung im Bereich des Schreibens technischer Inhalte. Sie teilt ihre Erkenntnisse mit der Entwickler-Community, indem sie technische Tutorials, Anleitungen und mehr verfasst.

Danke an unsere Sponsoren

Weitere großartige Lektüre zum Thema Entwicklung

Treiben Sie Ihr Geschäft an

Einige der Tools und Services, die Ihrem Unternehmen helfen grow.