●簡単なモジュール(index.pyを実行する)
[/home/guest/python15h/chapter01/hoge.py]
def foo( n ):
return n + 2
[/home/guest/python15h/chapter01/index.py]
import hoge ※hoge.pyをインポートする
print( hoge.foo( 5 ) ) ※7となる
●from~import
上の例では、関数を利用するのに[hoge.foo(5)]とコードが長くなってしまう。
以下の様に直接関数をインポートする方法もあります。
[/home/guest/python15h/chapter01/index.py]
from hoge import foo ※hoge.pyからfoo関数をインポートする
print( foo( 5 ) ) ※7となる
【メモ】
インポートしたモジュールは AS句を使い別名で管理できます。
例)
import myHogeHoge as hoge
from mypackage.mymodul import myAdd as add
ディレクトリ内に[__init__.py]が存在すると、そのディレクトリはパッケージとなる(ファイルは空で良い)
例)
[/home/guest/python/chapter01]
|
+----- [index.py]
+------【mypackage】
|
+------- [__init__.py]
+------- [mymodul.py]
※ここに関数[myAdd]があるとする
[index.py]
import mypackage.mymodul
print( mypackage.mymodul.myAdd() )
または、
from mypackage import mymodul
print( mymodul.myAdd() )
または、
from mypackage.mymodul import myAdd
print( myAdd() )
モジュール、パッケージには名前やファイル名を取得する特殊な変数が定義されています。
__file__ そのファイルのフルパスを表示
__name__ ファイル名を表示(拡張子はなし)
【メモ】
__name__は、直接実行されているファイルの場合は必ず[__main__]となる。
なので、例えば以下の様な分岐が可能
if __name__ == '__main__':
# 何か処理。。。 ※直接このファイルが実行されている(importされたファイルじゃない)