Pythonのモジュール(module)の使い方-import,from-

2021/01/13Python

Pythonのモジュール(module)は関数やクラスなどを1つのファイルにまとめたもので、他のプログラムから呼び出すことのできるものです。

基本的には関数やクラスを宣言し、それを読みこんで(importして)使います。

Pythonのモジュール(module)

Pythonのモジュール(module)は関数やクラスなどを1つのファイルにまとめたものです。

他のプログラムから呼び出すことができ、呼び出す際には「import文」でそのモジュールをロードしておく必要があります。

ロード方法は以下の通りです。

import モジュールファイル名(拡張子「.py」を除いたもの)

Pythonのモジュール(module)内の関数呼び出し

では、実際にPythonのモジュール(module)内の関数を呼び出ししてみます。

まずはモジュール(module)のソースです。
ここではファイル名は「sub_module.py」にしました。

#他のプログラムから呼び出される関数
def add_num( x, y ) :
    return x + y ;

次に呼び出す側のプログラムです。

Pythonのモジュール(module)を呼び出すには前述の通り「import文」を使い、呼び出す時に、そのモジュール名と関数名を「.(ピリオド)」でつないで呼び出しを行います。

ここでは呼び出す側のファイル名を「main.py」にしています。

import sub_module

x = 10
y = 20
ret = sub_module.add_num( x, y )
print( "{}=module.add_num( {}, {} )".format( ret, x, y ))

これで

python main.py

と実行すると

30=module.add_num( 10, 20 )

となり、モジュール(module)内の関数が呼び出せていることが確認できます。

Pythonのモジュール(module)名のエイリアス

上記のmian.pyの「import sub_module」の後ろに「as エイリアス名」を追加するとモジュール(module)の関数がエイリアス名と関数名を「.(ドット)」でつないだ形で呼び出すことが可能になります。

モジュール名が長い時などに便利です。

import sub_module as sub

x = 10
y = 20
ret = sub.add_num( x, y )
print( "{}=module.add_num( {}, {} )".format( ret, x, y ))

fromを使ってオブジェクト名を指定してimportする

Pythonのモジュール(module)は「from」でモジュール名を指定し、そのなかのオブジェクト(関数や変数)だけをimportすることができます。

呼び出される側のモジュール(module)に2つの関数を用意します。

ここではファイル名は「sub_module.py」にしました。

#他のプログラムから呼び出される関数
def add_num( x, y ) :
    return x + y ;

def sub_num( x, y ) :
    return x -y ;

呼び出す側のソースでfromを使ってオブジェクト(関数や変数)を指定してimportします。

from sub_module import add_num

x = 10
y = 20
ret = add_num( x, y )
print( "{}=module.add_num( {}, {} )".format( ret, x, y ))

このコードを実行するすると

30=module.add_num( 10, 20 )

となり正常に実行できます。

ただし、importにない「sub_num()」関数を呼び出すと

30=module.add_num( 10, 20 )
Traceback (most recent call last):
  File "main.py", line 8, in <module>
    ret = sub_num( x, y )
NameError: name 'sub_num' is not defined

とエラーになります。

両方をimportすると

from sub_module import add_num, sub_num

x = 10
y = 20
ret = add_num( x, y )
print( "{}=module.add_num( {}, {} )".format( ret, x, y ))

ret = sub_num( x, y )
print( "{}=module.add_num( {}, {} )".format( ret, x, y ))

実行結果は

30=module.add_num( 10, 20 )
-10=module.add_num( 10, 20 )

となり正常に両方の関数を実行することができるようになります。

またimportを「*(アスタリスク)」を使って行うとすべてのオブジェクト(関数や変数)をimportすることができます。

複数のモジュール(module)のimport

プログラムが大きくなっていくと複数のモジュール(module)をimportすることになって行きますが、複数のモジュール(module)をインポートする際は

import os, sys, re

などのように「,(カンマ)」でつないでimportすることが可能です。

注意が必要なのは「PEP8(Python の標準ライブラリに含まれているPythonコードのコーディング規約)」では「,(カンマ)」でつないでimportすることは推奨されておらず、行を分けてimportすることになっています。

import os
import sys
import re

ただし「from」を使ってimportする際は「,(カンマ)」でつないでimportすることもOKになっています。


株式会社システムトラスト

人材募集中です。

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ