Какая разница между "кодированием = utf8" и "-" - кодированием: utf-8 - * - '?

Есть ли разница между использованием

#coding=utf8

и

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

Что насчет

# encoding: utf-8

Ответы

Ответ 1

Нет никакой разницы; Python распознает все 3. Он ищет шаблон:

coding[:=]\s*([-\w.]+)

в первых двух строках файла (который также должен начинаться с #).

Это буквальное "кодирование" текста, за которым следует либо двоеточие, либо знак равенства, за которым следуют необязательные пробелы. Любое слово, штриховые или точечные символы, следующие за этим шаблоном, считаются кодеком.

-*- представляет собой синтаксис, специфичный для Emacs; чтобы текстовый редактор знал, какую кодировку использовать. Это делает комментарий полезным для двух инструментов. VIM поддерживает аналогичный синтаксис.

См. PEP 263: Определение кодов исходного кода Python.