Python erkennt Folgendes als Anweisung, die die Codierung der Datei definiert:
# -*- coding: utf-8 -*-
Ich habe diese Art von Anweisungen definitiv schon einmal gesehen ( -*- var: value -*-
). Woher kommt das? Was ist die vollständige Spezifikation, z. B. kann der Wert Leerzeichen, spezielle Symbole, Zeilenumbrüche oder sogar sich -*-
selbst enthalten?
Mein Programm schreibt reine Textdateien und ich möchte einige Metadaten in diesem Format in sie aufnehmen.
# coding: utf-8
# coding: utf8
von Python 2.7 funktioniert auch außerhalb von PyCharm. (Ich benutze SublimeText).Antworten:
Diese Art der Angabe der Codierung einer Python-Datei stammt aus PEP 0263 - Definieren von Python-Quellcode-Codierungen .
Es wird auch von GNU Emacs erkannt (siehe Python-Sprachreferenz, 2.1.4 Codierungsdeklarationen ), obwohl ich nicht weiß, ob es das erste Programm war, das diese Syntax verwendet hat.
quelle
# -*- coding: utf-8 -*-
ist eine Python 2 Sache. In Python 3+ ist die Standardcodierung von Quelldateien bereits UTF-8 und diese Zeile ist unbrauchbar.Siehe: Soll ich die Codierungsdeklaration in Python 3 verwenden?
pyupgrade
ist ein Tool, das Sie für Ihren Code ausführen können, um diese Kommentare und andere nicht mehr nützliche Reste aus Python 2 zu entfernen, z. B. wenn alle Klassen von ihnen geerbt werdenobject
.quelle
Dies sind sogenannte dateilokale Variablen, die von Emacs verstanden und entsprechend gesetzt werden. Siehe entsprechenden Abschnitt im Emacs-Handbuch - Sie können sie entweder in der Kopf- oder Fußzeile der Datei definieren
quelle
In PyCharm würde ich es weglassen. Die UTF-8-Anzeige unten wird mit einer Warnung ausgeschaltet, dass die Codierung fest codiert ist. Denken Sie nicht, dass Sie den oben erwähnten PyCharm-Kommentar benötigen.
quelle
test1 = 'äöü'
diese eingebe, deutet dies an, dass Sie der Datei einen solchen Kopf hinzufügen. (Pycharm 2019.1)