В Python 3, почему объявления кодирования могут быть написаны как комментарий? - PullRequest
0 голосов
/ 20 сентября 2019

Раздел 2.1.3 Справочника по языку Python гласит:

Комментарии игнорируются синтаксисом.

Хотя я не совсем уверен в этом, я считаю, что это означает, что Python Intepreter будет игнорировать комментарии.

Напротив, в разделе 2.1.4 написано:

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

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

Источник

Разве эти два утверждения о интерпретаторе не противоречат друг другу?Другие?Что, черт возьми, происходит?

1 Ответ

1 голос
/ 21 сентября 2019

У вас есть действительные баллы о ясности документации.

Однако, как и во многих других языках (HTML, XML, стандарт JSON до 2017 года *), кодировка символов исходного файла / документа определяется перед любой лексической или синтаксической обработкой языка.Таким образом, правильно сказать: «Комментарии игнорируются синтаксисом».Поскольку после определения кодировки символов обработка возобновляется, и синтаксическая обработка игнорирует все комментарии.

В некотором смысле существует два языка: 1) для выражения кодировки символов;2) для выражения скрипта Python.Первый разработан так, что он принят, но не имеет значения для второго.


  • Последующие стандарты для JSON уменьшают набор допустимого кодирования символов из UTF-8, UTF-16LE,UTF-16BE, UTF-32LE, UTF-32BE просто UTF-8.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...