Pythonでのモジュールの読み込み(import, from)

Pythonのモジュール読み込み

Pythonでモジュールを読み込むとき、importやfromを用いますが読み込んだ後にモジュールの関数などを記述するときに違いがあります。

importによるモジュール読み込み

例としてmathモジュールを読み込むものとして、これをimportで読み込む場合は
>>> import math
とします。
また乱数のモジュールrandomを読み込む場合は
>>> import random
とします。

importで読み込んだモジュールの使用

ramdomモジュールの乱数を生成する関数の一つであるrandomを使用する場合は
>>> random.random()
とします。
またmathモジュールの定数pi(π)を使用する場合は
>>> math.pi
とします。
このようにモジュールの関数などを使用する場合、先頭にモジュール名を付ける必要があります。
(単に関数だけ書いて実行してもエラーとなってしまいます)

先頭に付けるモジュール名を別名にする(as)

>>> import random as rd
とasを用いてモジュールに対して別名を指定することが出来ます。この場合、次のように先頭に付けるモジュール名をrdとして使用出来るようになります。
>>> rd.random()


fromによるモジュール読み込み

importの他にfromを使ってもモジュールを読み込む方法があります。fromによるモジュール読み込みの場合、モジュールの中の特定の関数だけ読み込むことも出来ます。またimportとは異なり使うときの記述では先頭にモジュール名を付ける必要はありません。
(というかfromで読み込んだ場合、先頭にモジュール名を付けて実行するとエラーとなります)
(fromで読み込む場合でもimportというキーワードを用いるので、その点はやや分かり難いかも)

randomモジュールのrandom関数をfromで読み込む場合は
>>> from random import random
とします。そしてこれを使用する場合は
>>> random()
とします。
またmathモジュールの定数piの場合は
>>> pi
とします。

fromでモジュールの全ての関数(など)を読み込む

モジュールの関数を一度に全て読み込む場合は*(アスタリスク)を用いて
>>> from math import *
とします。これでmathモジュールの関数(など)のsin, cos, exp, sqrtなどそのまま書いて使用出来るようになります。
(読み込んだものと自分で定義した関数や変数名と被ると厄介なので、前もって何がモジュールに含まれているか調べておいた方がいいでしょう)


importとfromのどちらを使うのがいいか

モジュール読み込み、fromで読み込んだ場合は先頭にモジュールを付けずに済むため、使うときの記述を簡素に出来ます。しかしその反面、使用する関数がモジュールで読み込んだものかどうなのかが分かり難くなるという面もあります。その点、記述は長くなりますがimportで読み込んだ方が、ソースコードを読んだ時に実際何を読み込んでいるのかが分かりやすくなります。

個人的には、簡単なテストプログラムにおいてはfromで読み込み、きっちりとソースコードを書いておきたい場合はimportで読み込むような使い分けがいいかなぁと思っています。


コメント

スポンサーリンク


このブログの人気の投稿

gnuplotでプロットなどの色をcolornameの指定で変更する

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)