Wie weiter auf die nächste Schleife, iteration in Python PDB?
Angesichts dieser Beispiel-code:
import pdb
for i in range(10):
pdb.set_trace()
print(str(i))
Wenn ich die Eingabeaufforderung von VEH, wie kann ich das überspringen einer iteration der Schleife, mit der weiter loop control-Anweisung, wenn es auch von PDB, weiterhin die Ausführung von code?
- Also, klar zu sein, Sie wollen den code zu Verhalten, als ob eine
continue
- Anweisung, die ausgeführt wurden? Sie wollen nichtstr(i)
zu erhalten, gedruckt für, die Schleife, wahr? - Das ist richtig!!!!
- Übrigens, für das Allgemeine problem des "wie mache ich eine Unterscheidung zwischen pdb-Befehle und Python-Ausdrücke, die nur Aussehen wie pdb Befehle?", können Sie Präfix Ihre Python-Ausdruck mit einem Ausrufezeichen. Aber das scheint nicht zu funktionieren für
continue
im besonderen. - Wenn Sie fügen Sie eine pass-Anweisung am Ende der Schleife springen Sie an das Ende der Schleife, dann weiter und die nächste iteration der Schleife initialisiert richtig.
- Vielen Dank für Euch alle! Ich Schätze auch Kevin ' s Kommentar, das ist irgendwie eine Bestätigung, dass dies nur mit einem workaround.
- Ich war gekommen, um die gleiche Idee, als ich Begriff, dass der einzige Weg, um voran zu kommen, wurde Sie etwas nach den Anweisungen übersprungen wird. Ich sah nach dem Bearbeiten und wiederherstellen, die Sie geschrieben das gleiche, tut uns Leid.
- Ich sah Ihre Antwort gepostet bekommen und gelöscht, während ich war das Komponieren von eigenen Antwort. Ich dachte, ich würde Sie wissen lassen, da Sie dann bemerkte, dass Sie dachte, es war nicht möglich. Ja, ich denke, deine Antwort ist besser, da es mehr eine Gründliche und detaillierte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt wie eine seltsame Sache zu tun zu wollen. Sie sollten in der Lage sein zu verwenden, die Sprung-Befehl obwohl. Sie werden wahrscheinlich brauchen, um fügen Sie eine pass-Anweisung am Ende der for-Schleife, so dass Sie springen können, um das Ende der Schleife. Wenn Sie nicht sicher von der Linie, die zahlen des Codes können Sie dann
ll
, um herauszufinden, die Zeilennummern Ihrer Schleife.Es ist erwähnenswert, dass der Sprung zum
for
Linie starten Sie den loop.Können Sie nicht verwenden
continue
da neue Aussagen im debugger werden müssen komplette und gültig ist, ohne einem anderen Zusammenhang;continue
gegeben werden muss, innerhalb einer loop-Konstrukt wenn kompilierten. Als solche mit!continue
(mit der!
um zu verhindern, dasspdb
von der Interpretation des Befehls) kann nicht verwendet werden, selbst wenn der debugger die Verarbeitung eine Schleife konstruieren.Können Sie die
j[ump]
Befehl vorausgesetzt, Sie haben einen später - Anweisung zu springen, um. Wenn die Schleife leer ist, nach den Aussagen, die Sie wollte, um zu springen, können Sie nur "rewind":j 3
sprang auf der Linie 3, nicht überspringen nichts; die Linie 3 wird neu ausgeführt, einschließlich der Einrichtung derrange()
. Sie könnte springen Sie in die Linie 4, aber dann diefor
Schleife nicht Voraus.Müssten Sie zum hinzufügen einer weiteren Anweisung am Ende der Schleife zu springen, um für Python weiter aus. Diese Aussage kann ein
print()
oder einepass
oder irgendetwas anderes, das nicht zu ändern, Ihren Zustand. Man könnte sogarcontinue
als Letzte Anweisung. Ich verwendeti
:Demo:
Vom Debugger-Befehle: