seltsamer Syntaxfehler in Python, Version 2.6 und 3.1

9

Das mag kein weltbewegender Mangel an Python sein, aber ich trotzdem wundere dich über die Gründe hinter dem folgenden Verhalten: wenn ich Führen Sie

aus %Vor%

ich bekomme ::

%Vor%

Ich kann diese Ausnahme vermeiden, indem ich (1) das nachgestellte # lösche; (2) Löschen oder Auskommentieren der if __name__ == '__main__':\n print( 'yeah!' ) -Zeilen; (3) füge eine neue Zeile bis zum Ende der Zeile hinzu Quelle.

außerdem, wenn ich das Quellende ohne ein nacheilendes Newline-Recht habe hinter dem print( 'yeah!' ) wird die Quelle auch ohne kompiliert Fehler.

Ich könnte dieses Verhalten auch mit Python 2.6 reproduzieren, also ist es nicht neu zu der 3k-Serie.

Ich finde diesen Fehler sehr irritierend, umso mehr seit ich setze oben die Quelle in eine Datei und führe sie direkt aus oder hab sie Importiert wird kein Fehler auftreten - das ist das erwartete Verhalten.

a # (hash) außerhalb eines String-Literals sollte immer das darstellen Beginn eines (möglicherweise leeren) Kommentars in einer Python-Quelle; außerdem, die Vorhandensein oder Fehlen einer if __name__ == '__main__' -Klausel sollte verändere die Interpretation einer Quelle nicht auf einer syntaktischen Ebene.

kann jemand das obige Problem reproduzieren und / oder den Kommentar abgeben Phänomen?

Prost

    
flow 04.06.2010, 18:36
quelle

1 Antwort

3

aktualisieren

stellt sich heraus, dass es sich tatsächlich um einen Fehler handelt, auf den Ссылка hingewiesen wurde. Der Fehlerbericht ist Ссылка ; es scheint in 2.7 und 3.2 behoben zu sein.

Lösung

einmal erkannt, ist dieser Fehler extrem einfach zu beheben: Da eine gültige Python-Quelle sowohl syntaktisch gültig als auch semantisch unverändert bleiben soll, wenn ein Zeilenumbruch zum Quelltext hinzugefügt wird, tun Sie das einfach mechanisch zu jedem Quelltext. Das erinnert mich an das Semikolon ; , das Sie beim Zusammenstellen einer JavaScript-Quelle mit mehreren Dateien für die effiziente Zustellung an den Remote-Client mechanisch zwischen Ausgangstexte einfügen.

    
flow 05.06.2010, 16:20
quelle

Tags und Links