2. Python インタプリタを使う¶
2.1. インタプリタを起動する¶
Python インタプリタは、それが使えるマシン上では通常 /usr/local/bin/python3.5
としてインストールされています; Unix シェルの検索パスに /usr/local/bin
を入れることによって、次のコマンドをタイプしてインタプリタを開始することができます:
python3.5
[1] どのディレクトリに Python インタプリタをインストールするかはインストール時に選択できるので、インタプリタは他のディレクトリにあるかもしれません; 身近な Python に詳しい人か、システム管理者に聞いてみてください。 (例えば、その他の場所としては /usr/local/python
が一般的です。)
Windows では、 Python は大抵の場合 C:\Python35
にインストールされますが、インストーラ実行時に変更することができます。このディレクトリをあなたのパスに追加するには、以下のコマンドをコマンドプロンプトで実行してください。
set path=%path%;C:\python35
ファイル終端文字 (Unixでは Control-D
、DOS や Windows では Control-Z
) を一次プロンプト (訳注: ‘>>>’ のこと) に入力すると、インタプリタが終了ステータス 0 で終了します。もしこの操作がうまく働かないなら、コマンド: quit()
と入力すればインタプリタを終了できます。
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) を表示します。二次プロンプトは、デフォルトでは三つのドット (...
) です。インタプリタは、最初のプロンプトを出す前にバージョン番号と著作権表示から始まる起動メッセージを出力します:
$ python3.5
Python 3.5 (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 -*-
このように宣言しておくと、ソースファイル中の全ては UTF-8 ではなく encoding という文字コードでエンコードされているものとして扱われます。実際に利用できるエンコードのリストは Python ライブラリリファレンスの codecs
の節にあります。訳注: エンコーディング の部分には、実際には utf-8
や cp932
など、そのソースコードのエンコーディングを記述します。プログラムから日本語を扱う場合には、必ずある程度の文字コードの知識が必要になります。もし文字コードについてよく判らないのであれば、まずは英語だけ扱いながらチュートリアルを読み進めて、並行して文字コードについても勉強してみましょう。現在は、 Unicode の扱い易さの観点から、推奨される文字コードは utf-8
です。ただし、 utf-8
でソースを書いた場合、 utf-8
を表示できない Windows のコマンドプロンプトは print "こんにちは"
を実行すると文字化けを起こすでしょう。その場合は、互換性のために古い cp932
エンコーディングを使うか、 print u"こんにちは"
のように Unicode 文字列を使います。
例えば、エディターが UTF-8 でエンコードされたファイルをサポートせず他のエンコーディング、例えば Windows-1252 を利用しないといけない場合、次のように書くことができます:
# -*- coding: cp-1252 -*-
そして Windows-1252 文字集合中の文字をソースコード中に使うことができます。この特殊なエンコーディングコメントはファイルの 1行目か2行目 に書く必要があります。
脚注
[1] | Unixでは、Python 3.x インタープリタの実行ファイルはデフォルトでは |