MOの気になることを適当に伝えるブログ

moNote

Python

Python - パッケージ

投稿日:

Python の パッケージについての説明

複数のモジュールをまとめてパッケージとして扱うことができます。

パッケージはフォルダで管理し、通常 __init__.py という名前の特殊なファイルを配置します。__init__.py には初期化処理を記述します。なければ 空でも問題ありません。

フォルダに 格納するモジュールは .py ファイルです。

フォルダの追加

ソリューションエクスプローラ の プロジェクトを右クリックして 表示されるメニューから「追加」→「新しいフォルダ」をクリックします。

作成した フォルダ内に パッケージ化する モジュールを配置します。

上図では 「mymod1.py」と「mymod2.py」と設定ファイルとして 空の「__init__.py」ファイルを格納しています。

それぞれのモジュールの内容は 次のようです。

# mymod1.py

def printAAA():
    print("Hello AAA")
    
def printBBB():
    print("Hello BBB")
# mymod2.py

def printCCC():
    print("Hello CCC")
# __init__.py
 

import 文

from パッケージ名 import モジュール名

で モジュール内の関数などを使えます。

from mypkg import mymod1
from mypkg import mymod2

mymod1.printAAA()
mymod1.printBBB()
mymod2.printCCC()

モジュール内の関数などを直接インポートすることもできます。

from パッケージ名.モジュール名 import 識別子

識別子 は 関数名 を指定します。(変数名、クラス名でもOK)

from mypkg.mymod1 import printAAA
from mypkg.mymod1 import printBBB
from mypkg.mymod2 import printCCC

printAAA()
printBBB()
printCCC()

__init__.py

「__init__.py」に インポートの処理を書くと パッケージの利用が とても便利になります。

# __init__.py
from mypkg.mymod1 import printAAA
from mypkg.mymod1 import printBBB
from mypkg.mymod2 import printCCC

利用するには 次のように 記述します。

import mypkg

mypkg.printAAA()
mypkg.printBBB()
mypkg.printCCC()

「__init__.py」で「__all__」を使うと * で import できるようになります。

# __init__.py
__all__ = ["mymod1", "mymod2"]

利用するには 次のように 記述します。

from mypkg import *

mymod1.printAAA()
mymod1.printBBB()
mymod2.printCCC()

-Python
-

Copyright© moNote , 2020 All Rights Reserved Powered by STINGER.