【初心者向け】Pythonのimportって何? モジュール編

python_logo

どうも、こんにちは!
今回はPythonのimport文についてまとめました。

プログラミングの初心者の頃って、このimportって何をしているのかわかりにくいんですよね。。
それに加えて、書き方も複数あるのでどっち使えばいいの!?ってなります。

なので、本記事ではそんなあなたのためにimport文が何をしているのか違いについても簡単に示したいと思います。。

今回はモジュールのインポートについて絞って説明します。
パッケージのインポートについては後日しますね。

目次

  1. モジュールって何?
  2. importの役割
  3. importの書き方
  4. importの注意点
  5. おすすめの書き方

モジュールって何?

Pythonにおいてモジュールとは拡張子が.pyであるファイルを指します。

インポートについて知りたいと思っている方であれば、すでにいくつかPythonのプログラムを書いていると思います。


まさにファイル名の最後に「.py」が付いていたならそれはモジュールです!

変数、関数、クラスなど恐らくあなたが書いてきたもの全てが含まれているのです。

importの役割

Pythonに組み込まれている機能以外からどこどこのモジュールをつかいますよっていう宣言

モジュールをインポートすることによってそのモジュールの中身が使えるようになります。
つまり、新しい機能を簡単に追加できるのです!

import文の書き方

import文は書き方が2種類あります。
どちらも難しくないのでそれぞれの書き方を見ていきましょう

import A_Module

これはモジュールをインポートしますよっていう宣言です。
説明の最後にソースコードも付けておきますね。

※この例はモジュールが同じ階層にあることを前提としていますので気をつけてください!

ベーシックな使い方


import called
called.funcA()

特に難しいことは有りませんね。
呼び出したいモジュールをimportの後に続いて書いてください

カンマで複数指定できる


import called1,called2
called1.funcA()
called2.funcA()

一行にまとめて書くこともできます!

別名としてインポート


import called1 as c
c.funcA()

これでだらだらと長いモジュールを記述する作業からおさらばできます。

from A_Module import B_Object

これはモジュールの中のオブジェクトを使わせてもらいますよっていう宣言です。
オブジェクトっていうのは変数、モジュール、クラスといったものですね。

ベーシックな使い方


from import called import funcA
funcA()

1つ目のimportのやり方との違いに気づいたでしょうか?
この記法ですと、モジュール名が省略できるのです!

カンマで複数指定できる


from called1 import funcA,funcB
funcA()
funcB()

上記のコードを読みやすくしたものが以下のコード


from called1 import (
    funcA,
    funcB
)
funcA()
funcB()

もうお分かりかと思いますが、Pythonは人が読みやすいコードを目指している言語です。1行に全て詰め込むのは読みにくいのでやめたほうがいいですね。

別名としてインポート


from called1 import (
    funcA as A,
    funcB as B
)
A()
B()

この場合でも同様に別名として使用することができます。

以上を説明した参考コードを以下に置いておきますね。
注意して欲しいのですが、同じファイルの中に以下のファイルを作ってください。
※Python 3.6.7で動作確認はしています。

おすすめの書き方

最初のうちは今すぐに意識する必要はありません。
いつか、よりよいコードを目指したいと思った時に参考にしてください。

基本的にまとめてimportするのはNG!

但し、一つのモジュールからまとめて変数を取得する場合はOK!

一番最初に処理される位置におくこと

正確な位置はコメント(モジュールコメントやdocstring)とグローバル変数や定数の定義との間です。

importする順番はより一般的なものから記述

より標準的なものからインポートするイメージです。

具体的な順序としては以下になります。

標準ライブラリ>サードパーティライブラリ>ローカルライブラリ

上記のライブラリ間では空行で区切りましょう

ワイルドカード(*)の使用は禁止

from モジュール import *を使用することでモジュール内の全てのオブジェクトを使うことができます。
※厳密に言えば少し違いますが、イメージとしてはこれでOKです。

もちろんやめましょう。

インタープリタで実行するのは大丈夫です。
但し、ソースコードとして残すと第三者が見て何をしているのか非常に分かりにくくなります。

これらはPEP8でより詳細に書かれているので暇があるときに眺めておくと良いと思います。

参考:PEP8

モジュールのインポートは難しくない!

いかがだったでしょうか?

Python初心者の方がモジュールのインポートする場合は、上記の方法がほとんどだと思います。

今回取り上げられなかったパッケージのインポートは次回で取り上げたいと思います。
というのも、パッケージのインポートのやり方を良く使いますからね。。。

そんなわけで、以上になります!
みなさんがPythonをより理解していただければ幸いです。