for e in collections: pass
In der for-Schleife existiert das letzte Objekt e immer im Kontext. Auch außerhalb der Schleife ist der nachfolgende Verweis auf e weiterhin gültig.
Hier liegt ein Problem vor, das leicht übersehen wird. Wenn vor der Schleife bereits ein Objekt mit demselben Namen vorhanden ist, wird dieses Objekt überschrieben.
Wenn Sie sich in einer Code-fähigen IDE befinden, fordert die IDE dazu auf, dass die Variable „neu deklariert“ wird, aber zur Laufzeit tritt kein Fehler auf.
Die for-Schleife ist kein Abschluss. Sie können das Modul dis verwenden, um den folgenden Code zu zerlegen, wie Sie sehen können:
x = 5 for x in range(10): pass print x
Speichern Sie den Code im test.py-Datei und führen Sie python - m dis test.py
C:UsersPatrickDesktop>python -m dis test.py
1 0 LOAD_CONST 0 ( 5)
3 Store_Name 9 Load_Name 1 (Bereich)
12 Load_Const 1 10
4 25 sprung_absolute 19
>> 28 POP_BLOCK
6 >> 29 LOAD_NAME 0 (x)
32 PRINT_ITEM
33 PRINT_NEWLINE
34 LOAD_CONST 2 (Keine)
Dies gilt insbesondere beim Codieren mit der Python-Vorlagensprache. Der Code-Editor verfügt über keine Eingabeaufforderungen und findet nicht heraus, wo der Fehler liegt. Dies ist ein äußerst seltsames Beispiel, das mir begegnet ist. Warum sagen Sie seltsam, weil es kein logisches Problem gibt?
Wenn der Handler in einer Seitenvorlage diese Vorlage aufruft, werden zwei Objekte gleichzeitig übergeben (vom Handler verwende ich Tornado), ein Seitenobjekt und eine Seitenliste. Meine Bestellung lautet wie folgt:
{{ page.name if page else ''}}
Übergeordnete Seite> 🎜>
Hier liegt das Problem, beim Betrieb ist ein Fehler aufgetreten, und die Eingabeaufforderung ist die Fehlerseite, auf die in
{{ page.name if page else ''}}
vor der Zuweisung verwiesen wird.Während des Vorlagenaufrufvorgangs wird die Vorlagensprache auch in Python-Bytecode übersetzt und Zeile für Zeile analysiert und ausgegeben, daher weiß ich überhaupt nicht, ob es sich um einen Fehler im Tornado handelt Vorlagensprache. Achten Sie also auf die Variablennamen. Kurz gesagt, ich denke, dass die Ausnahmeverfolgung von Tornado sehr unfreundlich ist.