初めてのPython 第3版

　仕事でもJavaで休日もJavaに疲れたので、Pythonに浮気してみる。英語版なら第5版まで出ているみたい。

## 1章 PythonについてのQ&A

1. Pythonを使うメリットを6つあげてください。
	- ソフトウェアのクオリティ、生産性の高さ、ポータビリティ、充実したライブラリ、コンポーネント の統合が容易、プログラミングが楽しい、の 6 つです。特に、ソフトウェアのクオリティ、生産性の 高さが、Python がプログラマに選ばれている理由でしょう。
2. Pythonを利用している有名な企業、団体を4つあげてください。
	- Google、ILM(Industrial Light & Magic)、ジェット推進研究所、ESRIなど。現在では、ソフトウェ ア開発に関わる企業はほとんどすべて、何らかのかたちで Python を利用していると言ってよいでしょ う。顧客に向けて販売する製品の開発に利用しているところもあれば、ソフトウェアのテスト、シス テム管理などを目的とした小規模なスクリプトの作成に利用しているところもあります。
3. Pythonに欠点があるとしたら何ですか?
	- Pythonの欠点はパフォーマンスです。C、C++などのコンパイラ言語に比べるとどうしてもパフォー マンスは低くなります。とはいえ、そのパフォーマンスは実用に耐える範囲です。ほぼどのような用 途でも、遅すぎて使えないということはないでしょう。たいていの場合、Python のコードは C で書 かれたコードとほとんど変わらない速度で動きます。Python インタプリタの内部でタスクがコンパ イル済み C コードに渡されることも多いからです。処理速度が非常に重要な意味を持つプログラムの 場合は、Python のスクリプトと、C などのコンパイラ言語で作ったエクステンションを組み合わせる ということもできます。数値計算プログラムなどはその例です。
4. Pythonを使うとどんなことができますか?
	- Pythonを使えば、コンピュータを使ってできる、ほとんどすべてのことができるはずです。Webサ イトの構築、ゲーム開発などの他、ロボットの開発、宇宙船の制御などにも応用が可能です。
5. import thisは何のためのコマンドですか?
	- import thisはPythonの隠し機能の1つで、実行するとPythonの基本思想を詳しく知ることができ ます。次章を読めば、このコマンドの実行の仕方がよくわかるはずです。
6. この本のコード例に頻繁に“spam”という言葉が出てくるのはなぜですか?
	- それは、Python という名前が、英国のコメディユニット「モンティ・パイソン」に由来するからです。  
“spam”という言葉は、モンティ・パイソンの「スパム・スケッチ」というコントに出てきます。「老 夫婦が大衆食堂で注文をしようとするが、すべてのメニューにスパムが含まれている。客はヴァイキ ングばかりで、意味もなくスパムをたたえる歌を歌い出したりもする......」という内容です。spamは、 Python のスクリプトの中で変数名としてよく使用されます。

## 2章 Pythonプログラムの実行
1. Pythonインタプリタとは何ですか?
	- Pythonインタプリタとは、Pythonプログラムを実行するためのプログラムのことです。
2. ソースコードとは何ですか?
	- ソースコードとは、テキスト形式で書かれたステートメントの集合です。ソースコードの収められたファイルはテキストファイルになり、通常は“.py”という拡張子を付けます。
3. バイトコードとは何ですか?
	- バイトコードは、Python がソースコードをコンパイルしてできるローレベルのコードのことです。  
バイトコードのファイルには、自動的に“.pyc”という拡張子が付けられます。
4. PVMとは何ですか?
	- PVMはPython Virtual Machine(Python仮想マシン)の略です。Pythonの「ランタイムエンジン」であり、バイトコードを読み取って実行するという役割を持っています。
5. Pythonの実行システムのバリエーションにはどのようなものがありますか? 
	- Psyco、Shedskin、フローズンバイナリなど。
6. CPython、Jython、IronPythonの違いは何ですか?
	- CPythonは標準のPythonです。JythonとIronPythonは、それぞれJava環境、.NET環境に対応した
Python インプリメンテーションです。それぞれにコンパイラが異なります。

## 3章 プログラムの起動法
1. 対話型セッションの起動の仕方は?
	- Windowsの場合、対話型セッションを起動するには、[スタート]メニューの[すべてのプログラム] からPythonのエントリを選択し、[Python(command line)]という項目を選択します。また、他の プラットフォームでは、システムのコンソールウィンドウで、pythonというコマンドを入力して実 行するという方法で同じことができます(Windows では、コマンドプロンプトウィンドウを使用し ます)。その他、IDLEを起動するという方法もあります。メインのPython Shellウィンドウが対話型 セッションになるからです。シェルの環境変数PATHの設定に、Pythonのインストールディレクトリ が指定されていない場合などには、単にpythonと入力するのではなく、Pythonのインストールディ レクトリに移動するか、Python の実行形式ファイルの完全パス(たとえば、Windows の場合なら C:\Python25\python)を入力しなくてはならない場合もあります。
2. モジュールファイルを起動する場合、システムのコマンドラインはどこで入力すればよいですか?
	- システムのコマンドラインを入力するのは、各プラットフォームのシステムコンソールです。 Windowsの場合はコマンドプロンプトウィンドウということになります。UNIX、Linux、Mac OS X などでは、xterm あるいはターミナルウィンドウです。
3. Windowsの場合、ファイルアイコンをクリックする、というプログラムの実行方法には2つの問題があります。それは何ですか?
	- まず 1 つは、実行結果がほんの一瞬だけ表示されて、すぐに消えてしまうことです。つまり、事実上、 誰も実行結果を見ることはできません(raw_inputというビルトイン関数を使えば、この問題は解 決できます)。もう 1 つの問題は、Python のエラーメッセージも一瞬で消えてしまうため、誰にも見 ることができないことです(システムのコマンドラインや IDLE などの IDE を使用して開発すれば、 この問題は起きません)。
4. モジュールをリロードしなくてはならないのはどういう場合ですか?
	- Pythonは、デフォルトでは、モジュールをプロセスにつき一度しかインポート(ロード)しません。 もし、ソースコードに変更を加えて、その変更を Python を停止、再起動させずに反映させたいと思 えば、リロードが必要になります。リロードをするためには、対象となるモジュールを少なくとも一 度インポートしている必要があります。システムのコマンドライン、アイコンクリック、IDLE など の IDE を使ってコードを実行した場合、通常、この問題は起きません。こうした方法を使った場合、 毎回最新バージョンのソースコードを使ってモジュールが実行されるからです。
5. IDLEでプログラムを実行する手順は?
	- テキスト編集ウィンドウに実行対象のコードを表示した状態で、ウィンドウの[Run]メニューから
[Run Module]という項目を選択します。すると、ウィンドウに表示されたソースコードがトップレ ベルのスクリプトファイルとして実行され、実行結果がメインウィンドウ(Python Shellウィンドウ)に表示されます。
6. IDLEを使用する場合、主に2つのことが問題になります。それは何ですか?
	- IDLEは、プログラムの種類によってはハングアップする場合があります。特に、マルチスレッド(マ
ルチスレッドはかなり高度なテクニックなので、本書では触れません)の GUI プログラムではその 危険性が高くなります。その他、IDLE には、初心者が容易にプログラミングできるように考えられ た便利な機能が用意されている、という点にも注意が必要です。そうした機能の中には、IDLE GUI 以外には応用のきかないものもあるからです。たとえば、IDLE 環境でモジュールを実行すると、モ ジュールをインポートしたのと同じことになり、そのコード中の変数が、それ以降、自動的に IDLE の対話型セッションで使えるようになります。他の環境では、そういうことがないので混乱する恐れ があります。
7. 名前空間とは何ですか? モジュールファイルとどのように関係しますか?
	- 名前空間とは、変数(名前)の集合です。Python のモジュールには、Python プログラムで利用できる様々 な「変数(名前)」の集まりという側面もあり、モジュールはすべて、自動的に名前空間となります。 トップレベルで代入が行われる変数(名前)の集合、ということです。プログラムをモジュールに分 けることは、変数の衝突を防ぐことに役立っているとも言えます。各モジュールは、自己完結型の名 前空間なので、別々のモジュールで定義されている限り、たとえ名前が同じ変数であっても、衝突が 生じることはありません。