Python で書かれたプログラムは パーザ (parser) に読み込まれます。 パーザへの入力は、字句解析器 (lexical analyzer) によって生成 された一連の トークン (token) からなります。この章では、字句解析器 がファイルをトークン列に分解する方法について解説します。
Python は 7-bit の ASCII 文字セットをプログラムのテキストに 使います。 バージョン 2.3 で 新たに追加 された仕様: エンコード宣言を使って、文字列リテラルやコメントに ASCII ではない文字セットが使われていることを明示できます。 以前のバージョンとの互換性のために、Python は 8-bit 文字が見つかっても 警告を出すだけにとどめます; こうした警告は、エンコーディングを明示 したり、バイナリデータの場合には文字ではなくエスケープシーケンス を使うことで解決できます。
実行時の文字セットは、プログラムが接続されている I/O デバイスにもより ますが、通常 ASCIIのサブセットです。
将来のバージョンとの互換性に関する注意: 8-bit 文字に対する文字セットを ISO Latin-1 (ラテン語系アルファベットを 用いるほとんどの西欧言語をカバーするASCII の上位セット) とみなし たい気にもなるかもしれません。しかし、おそらく Unicode を編集できる テキストエディタが将来一般的になるはずです。こうしたエディタでは 一般的に UTF-8 エンコードを使いますが、UTF-8 エンコードは ASCII の上位セットではあるものの、文字序数 (ordinal) 128-255 の扱いが 非常に異なります。この問題に関してはまだ合意が得られていませんが、 Latin-1 と UTF-8 のどちらかとみなすのは、たとえ現在の実装が Latin-1 びいきのように思えたとしても賢明とはいえません。これはソースコード 文字セットと実行時の文字セットのどちらにも該当します。