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


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

Python が使用可能な環境では、インタプリタは一般的に
"/usr/local/bin/python3.10" にインストールされています。使用している
Unix シェルの検索パスに "/usr/local/bin" を追加すると、次のコマンドで
インタプリタを開始できます:

   python3.10

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

Microsoft ストア からPythonのインストールを行った Windows マシンでは、
"python3.10" コマンドが利用可能です。 py.exe ランチャ をインストールし
た場合、 "py" コマンドが使えます。 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.10
   Python 3.10 (default, June 4 2019, 09:25:04)
   [GCC 4.8.2] 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 実行ファイルと衝突させないためです。
