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
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.
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.
Tags und Links python python-3.x