Формат комментария кодировки Python - PullRequest
0 голосов
/ 12 сентября 2018

Изначально я научился задавать кодировку исходного кода в Python 2.7 следующим образом:

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

Теперь я только что заметил, что PEP263 также позволяет это:

# coding=utf-8

Есть ли различия между ними?Как насчет совместимости редакторов, кроссплатформенности и т. Д.?

А как насчет Python 3?Этот комментарий все еще необходим для python 3 или любой код в python 3 по умолчанию будет utf-8?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Взгляните на PEP3120 , который изменил кодировку по умолчанию для исходного кода Python на UTF-8

Для python 3.x, следовательно, можно найти в документах :

Если комментарий в первой или второй строке скрипта Python совпадает код регулярного выражения [=:] \ s * ([- \ w.] +), этот комментарий обрабатываются как декларация кодирования [...] рекомендуемые формы выражение кодировки:

# -*- coding: <encoding-name> -*-

, который также распознается GNU Emacs, и

# vim:fileencoding=<encoding-name>

, который признан VIM Брэма Муленаара. Если объявление кодировки не найдено, кодировкой по умолчанию является UTF-8

Поэтому сообщение о возвращении домой:

  1. python 3.x не обязательно должен указывать utf-8, так как это значение по умолчанию
  2. Способ написания строки кодирования в некоторой степени является личным выбором (только рекомендация в документации), он должен соответствовать только регулярному выражению.
0 голосов
/ 12 сентября 2018

Начиная с Python 3 кодировкой по умолчанию является utf-8. Вы все еще можете изменить кодировку, используя комментарий в специальном формате # -*- coding: <encoding name> -*-.

docs рекомендует использовать это выражение кодирования, поскольку оно также распознается GNU Emacs.

Поскольку python проверяет, соответствуют ли первые две строки регулярному выражению coding[=:]\s*([-\w.]+),
# coding=utf-8 также работает для обеспечения кодировки utf-8, но не распознается GNU Emacs.

...