Python インタープリタは,それが利用可能になっているマシンには, 普通 /usr/local/bin/python としてインストールされている。 だから,君の Unix シェルの検索パスに /usr/local/bin を 入れれば,シェルにコマンド
python
を打鍵することでインタープリタを開始できる。 インタープリタをどのディレクトリに置くかはインストール時のオプションだから, ほかの場所もあり得る。君のまわりの Python のグルーかシステム管理者に 問い合わせられたい (たとえば /usr/local/python がよくある候補地である)。
一次プロンプトで end-of-file 文字 (Unixでは Control-D, DOS や Windows では Control-Z) を打鍵すると, インタープリタは exit ステータス 0 で終了する。 もしこれが働かないときは,"import sys; sys.exit()" という コマンドを打鍵することによってインタープリタを終了できる。
インタープリタの行編集機能は普通あまり洗練されていない。
Unixでは,インタープリタをインストールした人が
GNU readline ライブラリのサポートを有効にしているかもしれない。
これはより高度な対話的編集およびヒストリ機能を追加する。
コマンド行編集がサポートされているかどうかを調べるには,
最初に現れた Python プロンプトに対して Control-P を打鍵してみるのが,
おそらく最も早い。
もしベルが鳴れば,コマンド行編集が可能である。
キーの手ほどきについては付録 A を見られたい。
もしも何も起こらないようにみえたり,あるいは P
がエコーされたなら,
コマンド行編集は利用可能になっていない。
単にバックスペースを使って現在行から文字を消せるだけだろう。
インタープリタはいくぶん Unix シェルのように動作する。つまり, 標準入力を tty デバイスに接続した状態で呼び出すと コマンドを対話的に読み取って実行し, ファイル名を引数にしたりファイルを標準入力にして呼び出すと そのファイルからスクリプトを読み取って実行する。
インタープリタを開始するもう一つの方法は "python -c command [arg] ..." である。 これはシェルの -c オプションと同じように command の文を実行する。 Python の文はしばしばスペースなどの,シェルにとって特別な文字を含むから, command 全体をダブル・クォートで囲むのがベストだ。
"python file" と "python <file" には
一つの違いがあることに注意しよう。
後者では input()
や raw_input()
の呼出しなどの
プログラムからの入力要求に対して file が充てられる。
このファイルはプログラムが実行を開始する前に既にパーサによって最後まで
読み取られているから,プログラムは即座に end-of-file に出会うことになる。
前者では (君が普通期待するように) 入力要求に対して
何であれ Python インタープリタの
標準入力に接続されたファイルまたはデバイスが充てられる。
スクリプト・ファイルを使うとき, スクリプトを走らせた後そのまま対話モードに入れると便利な場合がある。 そうするにはスクリプトの前に -i を渡せばよい。 (スクリプトが標準入力から読み取られるときは, 前の段落の説明と同じ理由で,これは働かない)。
インタープリタに渡されたスクリプト名とそれ以降の付加的な引数は,
変数 sys.argv
としてスクリプトへ渡される。これは文字列のリストである。
その長さは少なくとも 1 である。
スクリプトも引数も与えられないとき,sys.argv[0]
は空文字列になる。
スクリプト名が (標準入力を意味する) '-'
として与えられたとき,
sys.argv[0]
は '-'
にセットされる。
-c command が使われたとき,
sys.argv[0]
は '-c'
にセットされる。
-c command より後にあるオプションは,
Python インタープリタのオプション処理によって消費されずに
sys.argv
に残されるから,command で処理することができる。
コマンドが tty から読み取られるとき,
インタープリタは対話モード (interactive mode)にあると言われる。
このモードではインタープリタは次のコマンドを一次プロンプト
(primary prompt) で催促する。
一次プロンプトは普通,三つの大ナリ記号 (">>
> ") である。
継続行 (continuation line) に対しては
二次プロンプト (secondary prompt) で催促する。
これはデフォルトでは三つのドット ("... ") である。
インタープリタは,そのバージョン番号と著作権表示を言明する welcome メッセージ
を印字してから,最初のプロンプトを印字する。
python Python 1.5.2b2 (#1, Feb 28 1999, 00:02:06) [GCC 2.8.1] on sunos5 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>>
継続行は,複数の行から構成される構文を入力するとき必要とされる。 例としてこの if 文を見てみよう。
>>> the_world_is_flat = 1 >>> if the_world_is_flat: ... print "Be careful not to fall off!" ... Be careful not to fall off!
エラーが起こると,
インタープリタはエラー・メッセージとスタック・トレースを印字する。
対話モードのときはそれから一次プロンプトに戻る。
入力がファイルから来ているときはスタック・トレースを印字してから
非零 exit ステータスで終了する。
(try
文の except
節で処理された例外は,
ここで言うところのエラーではない)。
エラーには無条件に致命的 (fatal) であって非零 exit をひき起こすものがある。
内部的な矛盾状態とある種のメモリ枯渇がこれにあてはまる。
エラー・メッセージはすべて標準エラー・ストリームへ書かれる。
実行コマンドからの通常の出力は標準出力へ書かれる。
中断 (interrupt) 文字 (普通は Control-C か DEL) を
一次または二次プロンプトに対して打鍵すると入力が取り消され,
一次プロンプトへ戻る2.1。
コマンドの実行中に中断文字を打鍵すると KeyboardInterrupt
例外が
ひき起こされる。この例外は try
文で処理できる。
BSD の流れをくむ Unix システムでは, (インタープリタが利用者の PATH 上にあると仮定して)
#! /usr/bin/env python
という行を Python スクリプトの先頭におき, そしてそのファイルに実行可能モードを与えることによって, シェル・スクリプトのように Python スクリプトを直接実行可能にできる。 "#!" はファイルの最初の2文字でなければならない。 ハッシュ (ないしポンド) 文字 "#" は Python ではコメントを開始するために使われていることに注意されたい。
Python を対話的に使うとき,インタープリタを起動するたびに何がしかの 標準的なコマンドを実行させるようにするとしばしば手頃で便利である。 そうするには,君が望むスタートアップ時のコマンドを内容とするファイルの名前を, PYTHONSTARTUP という名前の環境変数にセットすればよい。 これは Unix シェルの .profile の機能に似ている。
このファイルが読まれるのは対話セッションだけであり,
Python がスクリプトからコマンドを読み取るときや,
/dev/tty がコマンドのソースとして陽に与えられたとき (このときは,
そのこと以外では対話セッションのように振舞う) には読まれない。
このファイルは対話コマンドが実行されるのと同じ名前空間で実行されるから,
これが定義したり輸入したオブジェクトは,限定子無しで対話セッションに使える。
このファイルでプロンプト sys.ps1
と sys.ps2
を変更してもよい。
もしも君が何か付加的なスタートアップ・ファイルをカレント・ディレクトリから 読みたいならば,グローバルなスタートアップ・ファイルの中で "if os.path.isfile('.pythonrc.py'): execfile('.pythonrc.py')"の様なコードを利用して君がプログラムできる。 もしスクリプトの中でスタートアップ・ファイルを使いたいならば, 君はスクリクプトの中で陽にそうしなくてはならない。
import os filename = os.environ.get('PYTHONSTARTUP') if filename and os.path.isfile(filename): execfile(filename)