![]()
13.モジュールの活用 (2015.4.9)
モジュールを利用する場合、
import <モジュール名>
と記述しますが、
import <モジュール名> as <新たに付けるモジュール名>
とすることで、自由に名前を付けることができます。モジュール名が長い場合に短縮できたり、覚えやすい名前が付けられるので便利です。例えばGPIOを利用する場合に、RPi.GPIOライブラリを使いますが、これをGPIOと短縮したい時には、
import RPi.GPIO as GPIO
と書けば良いのです。更に次のように記述すれば、モジュール内の指定した要素のみをインポートできます。
from <モジュール名> import <オブジェクト名(関数、定数等)>
オブジェクト名はカンマで区切って複数記述可能です。一例として、
from math import sqrt, pi
とすれば、平方根を求めるsqrt()関数と円周率をインポートできます。また、含まれる関数全てをインポートする場合は、次のように*(アスタリスク)とします。
from math import *
ここで疑問に思ったのですが、
import math
と何が違うのでしょう。テキストにそのヒントがありました。アスタリスクの場合は実行時にモジュール名を省略できるとあります。つまり、この書き方では、例えば平方根を求めるには
math.sqrt(9)
と書く必要があるわけです(アスタリスクの場合はsqrt(9)と書くだけで良い)。実際に試してみると違いがわかります。個人的には「モジュール名.関数名」の形で書いた方が明示的で良いと思うのですが。アスタリスクによる記述は、万一他のモジュールに同じ名前の関数があった場合、後から記述したものが上書きされてバグの温床になりかねません。注意が必要です。
自作モジュールを作る場合、重要なのがモジュールファイルの中に実行文がある場合、モジュールをインポートした時点で実行されることです。これを避けるために、モジュールの最後に特別な記述をします。例えばds18b20_data()と言うモジュールがあったとして、次のような記述を加えることでインポート時点では実行されないようにします。こうした記述があっても、モジュールは単独で実行することができます。
if __name__ == '__main__':
ds18b20_data()
![]()