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


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

Python インタプリタは、それが使えるマシン上では通常
"/usr/local/bin/python" としてインストールされています; Unix シェルの
検索パスに "/usr/local/bin" を入れることによって、次のコマンドをタイプ
してインタプリタを開始することができます

   python

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

Windows では、 Python は大抵の場合 "C:\Python27" にインストールされま
すが、インストーラ実行時に変更することができます。このディレクトリをあ
なたのパスに追加するには、以下のコマンドをコマンドプロンプトで実行して
ください。

   set path=%path%;C:\python27

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

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

インタプリタはさながら Unix シェルのように働きます。標準入力が端末に接
続された状態で呼び出されると、コマンドを対話的に読み込んで実行します。
ファイル名を引数にしたり、標準入力からファイルを入力すると、インタプリ
タはファイルから *スクリプト* を読み込んで実行します。

インタプリタを起動する第二の方法は "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]" はモジュールのフルパスになります。 "-c" *command* や
"-m" *module* の後ろにオプションを指定した場合、 Python インタプリタ自
体はこれらの引数を処理せず、 "sys.argv" を介して *command* や *module*
から扱えるようになります。


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

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

   python
   Python 2.7 (#1, Feb 28 2010, 00:02:06)
   Type "help", "copyright", "credits" or "license" for more information.
   >>>

行継続は、例えば以下の "if" 文のように、複数の行からなる構文を入力する
ときに必要です:

   >>> the_world_is_flat = 1
   >>> 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 でエンコードされているも
のとして扱われます。 デフォルトエンコーディング以外のエンコーディング
を使用するには、ファイルの *先頭* の行に特別なコメントを追加しなければ
なりません。 書式は以下の通りです:

   # -*- coding: encoding -*-

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

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

   # -*- coding: cp1252 -*-

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

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