0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[光-Hikari-のPython]08章-02 モジュール(パッケージのインポート)

Posted at

#[Python]08章-02 パッケージのインポート
前節では、モジュールというファイルをインポートして関数を呼び出していました。そこでは、単体のモジュールをインポートしていましたが、今後いろいろなプログラムを作成していくと、モジュールが増えていき、最終的には管理が煩雑となってしまいます。

この節では、モジュールの管理が煩雑にならないように、パッケージ(package:小包)という単位にまとめることで、管理を容易にすることができます。これによりモジュールをまとめることもできますが、パッケージ内にモジュールを階層化して管理をすることもできます。この節では、そのようなパッケージの扱いについて触れていきます。

イメージとしては、モジュールがファイル、それを管理するフォルダがパッケージです。
image.png

##パッケージの作成
パッケージを作成してみます。まず、以下の手順で空のパッケージを作成してください。
([pythonフォルダを右クリック]→[New]→[Python Package]の順で選択)
image.png

パッケージ名をpkgとします。
image.png

すると、以下のようにパッケージができます。空のpkgというパッケージを作成したはずなのに、__init__.pyという中身が空のファイルが入っています。これがあると、pkgがパッケージであることを示します。
image.png

では、作成したpkg内に、モジュールを作成していきましょう。今回は2つ作成していきます。
pkgフォルダを右クリックし、sampmodAsampmodBというモジュールファイルを作成してください。
image.png
image.png

それぞれのモジュールに以下のコードを記載してください。

.sampmodA.py
def calc_plus(x, y):
    print('sampmodAモジュール内のcalc_plus関数が呼び出されました。')
    return x + y
.sampmodB.py
def calc_mult(x, y):
    print('sampmodBモジュール内のcalc_mult関数が呼び出されました。')
    return x * y

##パッケージ内にあるモジュールのインポート
次にパッケージ内にあるモジュールをインポートすることを考えます。一般的には以下のように指定します。(いくつか方法があります)
【方法1】

.py
import パッケージ名.モジュール名

この方法だと、関数を呼び出す際に、**「パッケージ名.モジュール名.関数名」**という指定となり、毎回、パッケージ名とモジュール名を記載するため、コードが煩雑になります。

【方法2】

.py
from パッケージ名.モジュール名 import 関数名または変数名

この方法は、パッケージ内のモジュールから、ある関数だけ(変数だけ)を読み込むことができます。これにより、別ファイルから実行する際にも、関数名を指定するだけでパッケージ内のモジュールにある関数を呼び出せます。

次にパッケージにある上記2つのモジュールを実際にインポートします。今回は**【方法2】**のやり方でインポートをします。

Python Consoleから以下のコードを入力してください。

.py
>>> from pkg.sampmodA import calc_plus
>>> from pkg.sampmodB import calc_mult
>>> calc_plus(10, 20)
sampmodAモジュール内のcalc_plus関数が呼び出されました
30
>>> calc_mult(10, 20)
sampmodBモジュール内のcalc_mult関数が呼び出されました
200

これにより、パッケージ内のモジュールのインポートができたことを確認できたかと思います。

##最後に
パッケージのインポートについて触れましたが、これについても今後外部モジュール(ライブラリ)をパッケージから読み込む際に必ず必要なものとなります。
今回は自分でパッケージを作成し、さらにモジュールを自分で作成してそれをインポートについてして実行させましたが、自作するということはほとんどありません。今後は外部にあるパッケージ内のモジュールをインポートすることがほとんどだと思います。
この節で、パッケージ内のモジュールのインポートの仕方についてはしっかり身に着けてください。

###【目次リンク】へ戻る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?