Как работают «магические линии» в python при указании кодировки в файле python? - PullRequest
10 голосов
/ 21 мая 2011

В начале файла Python (первая строка) иногда я читаю

# -*- coding: utf-8 -*-

и иногда я читаю

# encoding: utf-8

Кажется, что обе строки делают одно и то же: указание utf8 в качестве кодировки для всего текста, помещенного в файл.

У меня есть вопросы:

  1. Почему это вообще работает? Я думал, что переводчик игнорирует все после #, потому что вызывает комментарий.
  2. В чем разница между двумя строками выше? Переводчик просто игнорирует -*-?

Ответы [ 2 ]

11 голосов
/ 21 мая 2011

Две формы эквивалентны.Версия -*- - это особый вид комментариев, понятный Emacs.См. PEP 263 для получения дополнительной информации.

Если комментарий, как в любой из этих форм, является одной из первых двух строк файла, интерпретатор будет использоватьуказана кодировка для чтения файла.

3 голосов
/ 21 мая 2011

Это работает, потому что реализация ищет его, в этом нет ничего волшебного. Разницы нет, все возможные варианты определены PEP 263 (единственное отличие в том, что первый Emacs-совместимый).

...