---
# System prepended metadata

title: 応用プログライミング演習(python)３

---

# 応用プログライミング演習(python)３
### モジュールとパッケージ（Module and Package）

#### モジュール
モジュールは拡張子「.py」を持つスクリプトファイルの中身（関数や変数の定義）です。そして、モジュール名とはPythonスクリプトファイル名から拡張子「.py」を取り去った名前になります。誤解を恐れずに強弁すると、シェバンとマジックコメントで始まるものは、すべてモジュールと考えてもらっていい、ということです。

ただし、組み込みモジュール、たとえば「builtins」など、Python処理系の中に初めから具備されているモジュールを除きます。スクリプトファイルではないモジュールたちは「sys.builtin_module_names」に束縛されています。

通常のモジュールはimport文によってスクリプトファイルからオブジェクトメモリへと読み込まれます。ここで留意しておかなければならないことがあります。モジュールはパス文字列たちを束縛しているリスト「sys.path」から探されるということです。さぁ、Pythonインタラクティブシェルを立ち上げてください。モジュール「sys」をインポートして確かめてみましょう。


javaはクラスを一つしか書けない。
pythonはクラスや関数を一つのなかにいっぱいいっぱい書ける。

[]カレントディレクトリーを意味している。

例えばpi = 3.14と自分で設定したけど。
元から入っているpiの値と衝突するから
うまいことするように自分でする。

#### パッケージ
前節でモジュールはスクリプトファイルと考えてもらっていいと記しました。拡張子「.py」を持つファイルです。そのようなファイルがたくさんになってくると、分類して整理したくなってきます。通常、OS（オペレーティングシステム）は、たくさんのファイルを分類し整理するために、ディレクトリ（フォルダ）の階層構造（根から派生した枝や葉などの木構造）、すなわち、ファイルシステムを提供しています。

Pythonでは、たくさんのスクリプトファイルを分類整理するために、OSが提供するファイルシステムを、そのまま利用しています。スクリプトファイル、すなわち、ファイルがモジュールならば、それらを分類整理するディレクトリがパッケージになります。パッケージはディレクトリと考えてもらっていいということです。ただし、パッケージであるディレクトリの中に「__init__.py」というスクリプトファイルが存在するディレクトリになります。「__init__.py」の中身は空であっても構いません。

いまカレントディレクトリ（モジュール検索パスの先頭）に「my_package」というパッケージをこしらえましょう。つまり、カレントディレクトリ「./」の直下に「my_package/」というディレクトリを作成し、そのディレクトリの中に「__init__.py」というファイルを作れば、Python処理系は「my_package」をパッケージとみなし、モジュール検索の対象としてくれるということです。以下のようになります。


pythonは所詮名前付けしているので
関すの中に関数を閉じ込めることだって可能である。


lamdaがいれこだという
複数の引数をとる関数は、所詮一つの引数に分解することが可能である。❤️


カリー化ができないのは　Cとjava
カリー化
複数の引数をカレー食べたい。