Резюме PEP, на которое вы ссылаетесь, действительно говорит само за себя:
В этом PEP предлагается ввести синтаксис для объявления кодировки
исходный файл Python . Информация о кодировании тогда используется
Анализатор Python для интерпретации файла с использованием заданной кодировки. Наиболее
в частности, это улучшает интерпретацию литералов Unicode в
исходный код и позволяет писать литералы Unicode
используя, например, UTF-8 непосредственно в редакторе, поддерживающем Unicode.
(акцент мой).
Даже если бы то, что вы хотели сделать, работало бы (заменяя кодировку исходного файла программно), это не имело бы никакого смысла. Подумайте об этом: код статичен (не меняется). Не имеет смысла пытаться читать его с другой кодировкой: есть только одна правильная (та, в которой автор источника отредактировал источник).
Что касается синтаксиса:
# This Python file uses the following encoding: utf-8
сам PEP говорит, что этот синтаксис: «Без строки интерпретатора, с использованием простого текста» . Он размещен там для людей. Так что, если вы откроете файл в текстовом редакторе и обнаружите, что он полон бессмысленности, вы можете вручную установить кодировку источника в его меню.
РЕДАКТИРОВАТЬ: Что касается того, почему вы должны установить кодировку между # -*-
и -*-
... Это чисто условно. Первый символ, знак хеша, говорит, что это комментарий (поэтому он не будет скомпилирован в байт-код), тогда _*_
- это просто способ сообщить парсеру, что этот конкретный комментарий для него / нее.
Это ничем не отличается от ввода вашего источника:
# TODO: fix this nasty bug
, в котором часть TODO:
сообщает разработчику (и некоторой IDE), что это сообщение требует действия. Вы могли бы действительно использовать все, что захотите, включая @MarkZar
или WTF!
... просто соглашение!
НТН!