Ich werde veröffentlichen, was ich mir zur Fehlerbehandlung in Python notiert habe. Weitere Informationen finden Sie unter dem folgenden Link.
https://docs.python.jp/3/tutorial/errors.html
Python 3.x
Es gibt (mindestens) zwei verschiedene Arten von Fehlern. Es ist ein Syntaxfehler und eine Ausnahme.
Ein Syntaxfehler bezieht sich auf einen Fehler in der Python-Syntax. Es kann sich auch um einen externen Fehler im Code handeln. Da Python Codeblöcke durch Einrücken ausdrückt, ist es meiner Meinung nach eine Sprache, die gut lesbar ist und weniger wahrscheinlich Syntaxfehler verursacht.
Andererseits kann die Ausnahme als interner Fehler im Code bezeichnet werden. Zum Beispiel ist der folgende Code im Python-Code korrekt, aber mathematisch seltsam, nicht wahr?
test = 10 / 0 # <=Es kann nicht durch 0 geteilt werden!
Auf diese Weise ist das Problem, das auftritt, wenn der Code ausgeführt wird, eine Ausnahme.
Syntaxfehler werden vom Interpreter automatisch erkannt, wenn er das Programm interpretiert, sodass Sie den verärgerten Teil beheben können.
Aber wie gehen Sie mit Ausnahmen um?
Python bietet Syntax wie "try" und "exception", um Ausnahmen zu behandeln. Schauen wir uns ein konkretes Beispiel an.
try:
answer = 10 / 0
except ZeroDivisionError:
print("divided by zero!!!")
Der obige Code enthält zwei Punkte.
try
-Klausel verursachen kannIn diesem Fall tritt die Ausnahme "ZeroDivisionError", die angibt, dass die Division durch 0 durchgeführt wurde, in der try-Klausel auf und wird unter "außer ZeroDivisionError" verarbeitet.
Wie Sie sehen können, verwenden Sie try ~ exception
, um Ausnahmen zu behandeln.
Definieren Sie eine Divide-Funktion, die zwei Zahlen als Argumente verwendet und den Quotienten wie folgt zurückgibt.
def divide(x, y):
answer = x / y
return answer
Es sieht auf den ersten Blick gut aus. Wie wir jedoch gesehen haben, müssen wir bei der Teilung vorsichtig sein. Wenn "dividieren (10, 0)" usw. ausgeführt wird, tritt "ZeroDivisionError" auf. Verbessern wir die Funktion wie folgt, wenn wir den Fall betrachten, in dem 0 als zweites Argument übergeben wird (0 wird als Ergebnis der Berechnung anstelle von buchstäblich 0 übergeben).
import math
def divide(x, y):
try:
answer = x / y
except ZeroDivisionError:
print("numbers cannot be divided by zero!")
answer = math.nan
return answer
Selbst wenn Sie es durch 0 teilen, funktioniert das Programm vorerst! Was ist jedoch, wenn Sie ein unerwartetes Argument wie "String" oder "Tapple" erhalten ... Ich werde die Antwort hier nicht beschreiben, aber versuchen, sie umzusetzen, indem ich die folgenden Punkte beachte.
Wenn Sie sich zu sehr für Ausnahmen interessieren, kann Ihr Code anschwellen und die Lesbarkeit beeinträchtigen. Denken Sie also von Fall zu Fall nach.
Selbst wenn eine Ausnahme auftritt oder Sie nicht wütend werden, möchten Sie möglicherweise etwas gemeinsam tun. Als konkretes Beispiel ist es etwas schmerzhaft, aber sehen Sie sich den folgenden Code an.
try:
answer = 10 / 0
except ZeroDivisionError as e:
answer = math.nan
finally:
print(answer)
Ein neues Schlüsselwort namens "endlich" ist erschienen. Mit diesem Schlüsselwort wird die in der Klausel "finally" angegebene Verarbeitung ausgeführt, unabhängig davon, ob eine Ausnahme auftritt oder nicht.
Übrigens heißt die "Ausnahme" -Klausel "als e", die das generierte Ausnahmeobjekt in einer Variablen namens "e" enthält, damit in nachfolgenden Blöcken darauf verwiesen werden kann. Wenn Sie den Code wie unten gezeigt ändern, wird daher der Inhalt der Ausnahme ausgegeben.
#Kürzung
except ZeroDivisionError as e:
print(type(e)) # => <class 'ZeroDivisionError'>
print(e.args) # => ('division by zero',)
print(e) # => division by zero
In Python wird der Umfang der Variablen im Wesentlichen durch den Einzug des Codes bestimmt. Kann dann auf die im folgenden Code definierte Variable "am_i_visible" im ersten "print ()" verwiesen werden?
try:
am_i_visible = "yes"
except:
do_something()
print(am_i_visible) # => ???
Sie können sich auf die richtige Antwort beziehen. Ich denke, dass "Ja" ausgegeben wird. In diesem Fall können Sie darauf verweisen, da der Einzug verwendet wird, um zu verdeutlichen, wie weit die Klausel "try" entfernt ist.
Python kann etwas verwirrend sein ... In der folgenden "for" -Anweisung wird die Variable "n" zu einer globalen Variablen ...
sum = 0
for n in range(1, 5):
sum = sum + n
print(n) # => 4
Es ist einfach, aber ich habe die Fehlerbehandlung von Python zusammengefasst. Es gibt noch mehr zu Pythons Ausnahmebehandlung, aber das war's.
Ich bin noch neu in Python. Wenn Sie also einen Rat haben, schreiben Sie ihn bitte in die Kommentare.
Recommended Posts