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


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

Python インタプリタは、通常 "/usr/local/bin/python3.6" にインストール
されます。Unix シェルの検索パスに "/usr/local/bin" が含まれていれば、
次のコマンドをタイプしてインタプリタを開始できます。:

   python3.6

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

Windows では、 Python のデフォルトでは "C:\Python36" にインストールさ
れますが、別のディレクトリも指定できます。このディレクトリを検索パスに
追加するには、以下のコマンドをコマンドプロンプトで実行してください。

   set path=%path%;C:\python36

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

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" とすることでこのリ
ストにアクセスすることができます。


2.1.2. 対話モード
-----------------

インタプリタが命令を端末 (tty) やコマンドプロンプトから読み取っている
場合、インタプリタは *対話モード (interactive mode)* で動作していると
いいます。

   $ python3.6
   Python 3.6 (default, Sep 16 2015, 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 実行ファイルと衝突させないためです。
