スポンサーリンク

コードが書ける!数式が書ける!AAが書ける!スタンプが貼れる!

無料の匿名掲示板型SNS「このはちゃんねる

新規会員募集中!

【Python】モジュールの作り方、使い方【入門第43回】

150, 2019-09-03

目次

モジュールとは?

こんにちは、narupoです。

今回はモジュールについてやります。
モジュールとは、コードをファイル単位に分割したものです。
つまり「モジュール = ファイル」と言えます。
関数やクラスなどをモジュール(ファイル)にまとめることで、プロジェクトを管理しやすくします。
これは一般的な手法なので、ぜひ覚えておきましょう。

具体的には↓を見ていきます。

  • モジュールの作り方
  • モジュールのインポート
  • モジュールのインポート方法いろいろ

モジュールの作り方

モジュールはファイルです。
拡張子が.pyで終わるファイルはすべてPythonではモジュールとして扱われます。
たとえば「utils.py」というモジュール(ファイル)を作ります。
これでutilsモジュールの完成です。

あっけないほど簡単でしたが、このutilsモジュールに関数を書いてみましょう。
たとえば↓のような関数です。

def hello_world():
    print('Hello, World!')

なんてことはない「Hello, World!」を出力するだけの関数です。
これでutilsモジュールに、関数hello_worldを定義することが出来ました。
あとは、この関数をどう使うかです。

このhello_worldという関数を別のファイルから利用したい場合は、↓のようにします。

  • utilsモジュールをインポートする
  • utilsモジュールのhello_world関数を使う

それでは具体的にどうやってインポートするか見てみましょう。

モジュールのインポート

さきほど作ったutilsモジュールを、例えばscript.py内で利用したいとなったとします。
ちなみに、utils.pyscript.pyは同じ階層にある(同一フォルダにある)ファイルです。
その場合、script.pyには↓のようなコードを書きます。

import utils

↑これでutilsモジュールのインポートは完了です。
インポートするときは、モジュールの拡張子(.py)は省略して記述します。
以上でutilsモジュールを使う準備ができました。
ちなみにimport(インポート)は日本語で「輸入する」などの意味になります。
utilsモジュールをscript.pyに輸入してるわけですね。

あとは↓のようにutilsにドット(.)を付けてhello_world関数を呼び出します。

import utils

utils.hello_world()

↑のコードの実行結果は↓のようになります。

Hello, World!

無事、hello_world関数を呼び出すことが出来ました。

もちろん関数だけでなく変数やクラスなどもインポートすることができます。
たとえば↓のようにutils.pyを定義します。

dog = 'わんわん'

class Cat:
    pass

これは↓のようにインポートして使うことが可能です。

import utils

print(utils.dog)
cat = utils.Cat()

モジュールのインポート方法いろいろ

インポート方法はいろいろあります。
具体的には↓のような方法です。

  • 関数のみをインポート
  • 複数の関数をインポート
  • 別名(エイリアス)を付ける

これらを使い分けることができれば、もはやあなたはインポート上級者と言えるでしょう。

インポートならまかせろー! バリバリ

やめて!

関数のみをインポート

先ほどは↓のようにモジュールをインポートしました。

import utils

これを↓のように変更すると、関数を直接インポートできます。

from utils import hello_world

↑は「utilsというモジュールからhello_world関数をインポートする」という意味になります。
↑のようにインポートすると、↓のように関数を使うことができます。

from utils import hello_world

hello_world()

シンプルですね。
もちろん、変数やクラスなども同様です。

複数の関数をインポート

複数の関数などをインポートしたい場合はどうするのでしょうか?
utils.pyに↓のようにshout関数を追加してみましょう。

def hello_world():
    print('Hello, World!')


def shout():
    print('ミ〇ティー!')

再びscript.pyに戻りますが、複数の関数をインポートするには↓のようにします。

from utils import hello_world, shout

カンマ(,)で区切ってインポートしたいオブジェクトを並べるだけです。
これでhello_world関数とshout関数をインポートすることが出来たので、↓のように使えます。

from utils import hello_world, shout

hello_world()
shout()

↑のコードの実行結果は↓のようになります。

Hello, World!
ミ〇ティー!

また、インポートする関数はカッコで囲むことも出来ます。

from utils import (hello_world, shout)

↑は先ほどのインポートと変わりません。
カッコを付けると何が嬉しいのかと言うと、↓のようにインポートする関数を縦に並べることができる点です。

from utils import (
    hello_world,
    shout
)

インポートする関数などが多い場合は↑のようにした方が見た目が綺麗になるかもしれません。
もちろん、変数やクラスなども同様です。

別名を付ける

インポートしたオブジェクトには別名(エイリアス)を付けることができます。
たとえば先ほどのhello_world関数のインポートを見てみましょう。

from utils import hello_world

hello_world関数に別名を付けるにはasと書いてそのあとに名前を書きます。

from utils import hello_world as hw

↑の場合は、hello_world関数をhw関数としてインポートしています。
このhw関数はhello_world関数そのものです。
なので↓のように使うことができます。

from utils import hello_world as hw

hw()

もちろん、モジュールにも別名を付けることができます。

import utils as u

u.hello_world()

別名は、たとえばモジュール同士の関数などが名前衝突したときなどに威力を発揮します。
モジュールACatクラスがあって、モジュールBでもCatクラスがあった場合、↓のようにインポートすれば名前衝突を回避できます。

from A import Cat as ACat
from B import Cat as BCat

これはけっこうよく使われるテクニックなので覚えておきましょう。
もちろん、変数やクラスなどにも使えます。

おわりに

モジュールを使えるようになると、標準ライブラリの使用や自作モジュールの開発が可能になるので、かなり出来ることが増えます。
最初はimport文などはあまり馴染まないかもしれませんが、使い慣れると便利に使えるようになります。

以上、次回に続きます。

また見てね

関連動画

投稿者名です。64字以内で入力してください。

必要な場合はEメールアドレスを入力してください(全体に公開されます)。

投稿する内容です。

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク