##
4 エンコード宣言 (encoding declaration)

Python スクリプト中の最初の行か、二行目にあるコメントが正規表現 `coding[=:]\s*([-\w.]+)` にマッチする場合、コメントは エンコード宣言 (encoding declaration) として処理されます; 表現に対する最初のマッチグループがソースコードファイルのエンコードを 指定します。エンコード宣言式として推奨する形式は、GNU Emacs が 認識できる形式

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

または、Bram Moolenar による VIM が認識できる形式

    # vim:fileencoding=<encoding-name>

です。さらに、ファイルの先頭のバイト列が UTF-8 バイトオーダ記号 (`'\xef\xbb\xbf'`) の場合、ファイルのエンコードは UTF-8 と宣言されているものとします (この機能は Microsoft の notepad やその他のエディタでサポートされています)。

エンコードが宣言されている場合、Python はそのエンコード名を認識 できなければなりません。宣言されたエンコードは全ての字句解析、特に文字列の終端を検出する際や Unicode リテラルの内容を翻訳する上で用いられます。 文字列リテラルは文法的な解析を行うために Unicode に変換され、 解釈が行われる前に元のエンコードに戻されます。エンコード宣言は 宣言全体が一行に収まっていなければなりません。