# 2. Python インタプリタを使う

## 2.1. インタプリタを起動する

The Python interpreter is usually installed as `/usr/local/bin/python3.12` on those machines where it is available; putting `/usr/local/bin` in your Unix shell's search path makes it possible to start it by typing the command:

    python3.12

[1] どのディレクトリに Python インタプリタをインストールするかはインストール時に選択できるので、インタプリタは他のディレクトリにあるかもしれません; 身近な Python に詳しい人か、システム管理者に聞いてみてください。 (例えば、その他の場所としては `/usr/local/python` が一般的です。)

On Windows machines where you have installed Python from the Microsoft Store, the `python3.12` command will be available. If you have the py.exe launcher installed, you can use the `py` command. See 補足: 環境変数の設定 for other ways to launch Python.

ファイル終端文字 (Unixでは ``Control`-`D`` 、DOS や Windows では ``Control`-`Z``) を一次プロンプト (訳注: '>>>' のこと) に入力すると、インタプリタが終了ステータス 0 で終了します。もしこの操作がうまく働かないなら、コマンド: `quit()` と入力すればインタプリタを終了できます。

GNU Readline ライブラリをサポートしているシステム上では、対話的行編集やヒストリ置換、コード補完のインタプリタの行編集機能が利用できます。コマンドライン編集機能がサポートされているかを最も手っ取り早く調べる方法は、おそらく最初に表示された Python プロンプトに ``Control`-`P`` を入力してみることでしょう。ビープ音が鳴るなら、コマンドライン編集機能があります。編集キーについての解説は付録 対話入力編集と履歴置換 を参照してください。何も起こらないように見えるか、 `^P` がエコーバックされるなら、コマンドライン編集機能は利用できません。この場合、現在編集中の行から文字を削除するにはバックスペースを使うしかありません。

インタプリタは Unix シェルと同じように使えます。標準入力が端末に接続された状態では、コマンドを対話的に読み込んで実行します。ファイル名を引数に指定するか、`python3 < filename` のように標準入力ファイルとして指定すると、インタプリタはファイルから スクリプト を読み込んで実行します。

インタプリタを `python -c command [arg] ...` のように起動する方法もあります。この形式では、シェルの `-c` オプションと同じように、 command に指定した文を実行します。 Python 文には、スペースなどのシェルにとって特殊な意味をもつ文字がしばしば含まれるので、 command 全体をクォート(訳注: `'`)で囲っておいたほうが良いでしょう。

Python のモジュールには、スクリプトとしても便利に使えるものがあります。 `python -m module [arg] ...` のように起動すると、 module のソースファイルを、フルパスを指定して起動したかのように実行できます。

スクリプトファイルを使用する場合、スクリプトの実行が完了した後、そのまま対話モードに入れると便利なことがあります。これには `-i` をスクリプト名の前に追加します。

全てのコマンドラインオプションは コマンドラインと環境 で説明されています。

### 2.1.1. 引数の受け渡し

スクリプト名と引数を指定してインタプリタを起動した場合、スクリプト名やスクリプト名以後に指定した引数は、文字列のリストに変換されて `sys` モジュールの `argv` 変数に格納されます。 `import sys` とすることでこのリストにアクセスできます。 `sys.argv` には少なくとも一つ要素が入っています。スクリプト名も引数も指定しなければ、 `sys.argv[0]` は空の文字列になります。 スクリプト名の代わりに `'-'` (標準入力を意味します) を指定すると、 `sys.argv[0]` は `'-'` になります。 `-c` command を使うと、 `sys.argv[0]` は `'-c'` になります。 `-m` module を使った場合、 `sys.argv[0]` はモジュールのフルパスになります。 Python インタープリタは、`-c` command や `-m` module の後ろに指定したオプションは無視します。無視された引数は、`sys.argv` を使って command や module から参照できます。

### 2.1.2. 対話モード

インタプリタが命令を端末 (tty) やコマンドプロンプトから読み取っている場合、インタプリタは 対話モード (interactive mode) で動作しているといいます。 このモードでは、インタプリタは 一次プロンプト (primary prompt) を表示して、ユーザにコマンドを入力するよう促します。一次プロンプトは普通、三つの「大なり記号」 (`>>>`) です。継続行では、インタプリタは 二次プロンプト (secondary prompt) を表示します。二次プロンプトは、デフォルトでは三つのドット (`...`) です。 インタプリタは、最初のプロンプトを出す前にバージョン番号と著作権表示から始まる起動メッセージを出力します:

    $ python3.12
    Python 3.12 (default, April 4 2022, 09:25:04)
    [GCC 10.2.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>>

継続行は、複数行の構文を入力するときに使います。例えば、 `if` 文は継続行を使用します

    >>> the_world_is_flat = True
    >>> if the_world_is_flat:
    ...     print("Be careful not to fall off!")
    ...
    Be careful not to fall off!

対話モードについての詳細は 対話モード を参照してください。

## 2.2. インタプリタとその環境

### 2.2.1. ソースコードの文字コード

デフォルトでは、Python のソースコードは UTF-8 でエンコードされているものとして扱われます。UTF-8 では、世界中のほとんどの言語の文字を、同時に文字列リテラル、識別子、コメントなどに書けます。--- ただし、標準ライブラリは識別子に ASCII 文字のみを利用していて、その他のポータブルなコードもその慣習に従うべきです。それらの文字を正しく表示するためには、エディターはそのファイルが UTF-8 である事を識別して、そのファイルに含まれている文字を全てサポートしたフォントを使わなければなりません。

デフォルトエンコーディング以外のエンコーディングを使用するには、ファイルの 先頭 の行に特別なコメントを追加しなければなりません。書式は以下の通りです:

    # -*- coding: encoding -*-

encoding には、Python が `codecs` でサポートしている有効なエンコーディングを指定します。

例えば、Windows-1252 エンコーディングを使用するには、ソースコードファイルの先頭行は下記のようにします:

    # -*- coding: cp1252 -*-

ソースコードが UNIX "shebang" 行 で始まる場合には、先頭行 のルールは当てはまりません。 この場合には、エンコーディングの宣言はファイルの2行目に追加します。 例えば以下のようになります:

    #!/usr/bin/env python3
    # -*- coding: cp1252 -*-

脚注

[1]

Unixでは、Python 3.x インタープリタの実行ファイルはデフォルトでは `python` という名前ではインストールされません。同時にインストールされた Python 2.x 実行ファイルと衝突させないためです。