Python
プログラミング
python3
プログラミング学習

はじめに

  • モジュール化についておさらい

目次

  • モジュール化
  • インポート
  • パッケージ
  • スクリプト化

モジュール化

概要

  • 複雑なシステム機能を相互依存の強い部品同士で構成するのではなく、交換可能で独立した部品同士で構成するようにすること

種類

モジュール

  • 複数のPythonコードをまとめたもの

パッケージ(フォルダ)

  • モジュールを階層的に管理構成するもの

インポート

概要

  • モジュールを読み込み、利用可能にすること
  • Pythonでは同じパッケージ内でモジュールが異なればインポートが必要
  • 複数指定可能
  • インポート対象はクラス名や関数名を指定
構文
from module_name import target

記述例(同一パッケージ内のモジュール)

calc.py
def plus(x, y):
    return x + y
clac_main.py
from calc import plus
print(plus(3, 5))
結果
8

パッケージ

概要

  • モジュールを機能など任意の目的でまとめられたもの
  • フォルダと同様

構成

  • パッケージ内には__init__.pyという特別なモジュールが必要
  • フォルダは置かれたファイルのスーパーモジュールとして参照される

インポート

概要

  • from部分にパッケージ名を追記する
構文
from package_name.module_name import target

記述例

pkg1.calc.py
def plus(x, y)
    return x + y
calc_main.py
from pkg1.calc import plus
print(plus(2, 3))
結果
5

__init__.pyモジュール

  • Pythonのパッケージであることを表す
  • モジュール内に定義した属性はそのファイルの親フォルダのモジュール属性となる
  • 異なるモジュールを利用する際、importなど初期化処理を記述できる

記述例

example.__init__.py
form example.calc import Calc
from example import *

def plus(x, y):
    return x + y
example.calc.py
class Calc:
    def plus(self, x, y):
        return x + y
example.init_module.py
from example import plus
import example

print(plus(20, 30))

c = example.Calc()
print(c.plus(20, 20))
結果
50
40

スクリプト化

概要

  • モジュールは読み込んで利用する場合とスクリプトとしてその場で実行する場合と区別できる
  • スクリプト実行する場合はファイルの一番下で以下構文を利用
  • 分岐の中にスクリプト実行させたいコードを記述
構文
if __name__ == '__main__':
記述例
def plus(x, y):
    return x + y

if __name__ == '__main__':
    print(plus(20, 30))
結果
50