The Japanese translation of "A Whirlwind Tour of Python" - Modules and Packages

http://nbviewer.jupyter.org/github/jakevdp/WhirlwindTourOfPython/blob/master/13-Modules-and-Packages.ipynb

# モジュールとパッケージ
多くの範囲のタスクに対しての有用なPythonの一つの特徴は、"batteries included"となっている事実です。すなわち、Pythonの標準ライブラリが幅広いタスクのための使いやすいツールを含んでいます。これに加えて、第三者製のツールとパッケージの広いエコシステムがあります、それらは機能的により特化したものを提供します。ここで、標準ライブラリモジュールをimportすること、第三者製のモジュールのインストールのためのツール、そしてどうやって自身のモジュールを作るかの記述をみてみましょう。

## モジュールの読み込み：import文
組み込みまたは第三者モジュールの読み込みのために、Pythonはimport文を提供しています。その文を使ういくつかの方法があります、たいていのおすすめからあまりないおすすめまでかんたんにここで説明します

### 明示的モジュールimport
明示的なモジュールのimportは名前空間の中のモジュール内容をとっておきます。それから名前空間はそれらの間で"."でその中身に言及するために使われます。例えば、ここでは組み込みのmathモジュールをimportして、piのコサインを計算してみます：

```
In [1]:
import math
math.cos(math.pi)
Out[1]:
-1.0
```
### エイリアスによる明示的なモジュールimport
より長いモジュールの名前で、いくつかの要素にアクセスしたいとき毎回完全なモジュール名を使うには便利でありません。この理由から、名前空間に対して短い別名を作る 一般的に"import ... as ..."という形式を使うのです。例えば、有名なデータサイエンスに有用な第三者製パッケージのNumpy(Numerical Python)パッケージは慣習的にnpエイリアスの下にimportされます。

```
In [2]:
import numpy as np
np.cos(np.pi)
Out[2]:
-1.0
```

### 明示的なモジュール内容のimport
モジュールの名前空間をimportするよりむしろときどき、モジュールからのいくつかの特定のものをimportしたいです。これは"from ... import ..."形式でできます。例えば、 cos関数とpi定数をmathモジュールからimportできます:

```
In [3]:
from math import cos, pi
cos(pi)
Out[3]:
-1.0
```

### モジュール内容の暗示的なimport
最後に、ときにモジュールの内容の全体をローカルの名前空間にimportするのに役立ちます。これは"from ... import *"形式でなされます：

```
In [4]:
from math import *
sin(pi) ** 2 + cos(pi) ** 2
Out[4]:
1.0
```
この形式はあったとしても補助的に使われるべきです。そのようなimportがときどきあなたが上書きをいとしない関数名をうわがくことが問題です、そして文の暗黙性は変化することを決定しづらくします。

たとえば、Pythonは様々な演算のために使われる組み込みの総計関数をもっています。

```
In [5]:
help(sum)
Help on built-in function sum in module builtins:

sum(...)
    sum(iterable[, start]) -> value
    
    Return the sum of an iterable of numbers (NOT strings) plus the value
    of parameter 'start' (which defaults to 0).  When the iterable is
    empty, return start.
```
たしかな値（ここでは-1でスタートします）ではじまる、シーケンスの合計を計算するのに使えます：

```
In [6]:
sum(range(5), -1)
Out[6]:
9
```
さあもし "importing * from numpy"のあとに確実に同じ関数呼び出しを作るなら何が起こるか観察しましょう：

```
In [7]:
from numpy import *
In [8]:
sum(range(5), -1)
Out[8]:
10
```
それによって結果がかわります！これに対する理由は、"import *"文が組み込みのsum関数をnumpy.sumで置き換えしたことです、これは異なる呼び出しの印をもっています：前者は、-1で始まるrange(5)を合計し、後者は最後の軸（-1によって示されます）にそってrange(5)を合計することになります。これは、もし"import *"を使うときに、きにしないなら、おきるかもしれない状況の種類です、このため、あなたが確実にあなたがしていることをわかっていない限りではこれを避けるのが一番よいです。

## Pythonの標準ライブラリをImportすること
Pythonの標準ライブラリは多くの役立つ組み込みのモジュールを含んでいて、それはPythonのドキュメントで完全に読めます。それらの任意をimport文でimportでき、前の節でみたhelp関数を使って探求できます。ここで、究極的に探して学ぶことを望むかもしれないいくつかのモジュールの不完全なリストを紹介します：

* os and sys: ファイルディレクトリ構造を案内したり、シェルコマンドを実行したりすることを含む、OSのインターフェスのためのツールです
* math and cmath: 数学的な実数と虚数の関数と演算です
* itertools: イテレータとジェネレータでの構築と作用のためのツールです
* functools: 関数プログラミングを補助するツールです
* random: 擬似乱数生成のためのツール
* pickle: オブジェクトの永続性のためのツール：オブジェクトを保存して、ディスクから読み込むこと
* json and csv: JSON形式とCSV形式ファイルを読むツール
* urllib: HTTPやその他ウェブリクエストを行うツール
これらの情報を、よりおおくはPython標準ライブラリドキュメントでわかります: https://docs.python.org/3/library/.

## 第三者モジュールのImporting
Pythonを有効にすることの一つ、特にデータサイエンスの世界の中においては、第三者製モジュールのエコシステムです。これらは単に組み込みモジュールのようにimportできますが、最初にモジュールがあなたのシステムにインストールされてなければなりません。そのようなモジュールの標準的な登録は"Python Package Index(短くはPyPI)です、それはWeb http://pypi.python.org/ で見つかります。慣習的にPythonはpip（"pip installs packages"を意味する再帰的略語）と呼ばれるプログラムをもってます。それは自動的にPyPI（もしPythonのバージョン2を浸かるなら、pipはわけてインストールされなければなりません）にのってリリースされてるパッケージをとりだします。例えば、私が作ったsupersmoother パッケージをインストールしたいなら、もとめられることはコマンドラインで次をタイプするだけです。

```
$ pip install supersmoother
```
パッケージのソースコードは自動的にPyPIリポジトリからダウンロードされます、そしてパッケージが標準的なPythonのパス（あなたが使うコンピュータ場でそうするためにあなたが権限をもつことを想定します）にインストールされます。

さらなるPyPIとpipインストーラの情報は、ドキュメント http://pypi.python.org/ を参考にしてください。