__init__.pyの役割
今,Instant Flask Web Development
でflaskの勉強をしています.その本で,__init__.py
はpythonのディレクトリを表すために用いますと書かれていて,他に意味があるのかなと思い,調べました.
今回は__init__.py
の意味について軽くまとめます.
__init__.py
の役割
__init__.py
の主な役割は2つあります.
まず,1つ目は__init__.py
はpythonスクリプトがあるディレクトリを表す役割をなします.2つ目の役割としては必要なモジュールをimport
するなどの初期化処理を記載し,初期化の役割を担う役目があります.
ですが,基本はpythonスクリプトがあるディレクトリを表すだけに使われるので,空のファイルです.
__init__.py
のメリット
__init__.py
のメリットは異なるディレクトリのファイルをインポートする際に発揮されます.これは当たり前の事ですが,僕は知りませんでした.orz
__init__.py
ファイルがある事で異なるディレクトリにあるpythonスクリプトを簡単にインポート出来るようになります.
では,実例として,まず下記のようなディレクトリ構造があるとします.
. |── test | |── __init__.py | |── import_test.py
import_test.py
ファイルの中身:
print 'import_test.py is imported !' def print_name(): print __name__
続いてimport_test
モジュールをインポートする方法を示します.
import test.import_test
または
from test import import_test
でimport_test
モジュールをインポートできます.
インポート後はimport_test.py is imported !
が出力されます.
また,print_name()
関数を呼ぶとtest.import_test
と出力されます.
ちなみに,今まで僕は異なるディレクトリにいるモジュールをインポートする時は 以下のように記述していました.
import sys sys.path.append('./test') import import_test
こんな変な記述をしなくても,__init__.py
をディレクトリに置くことで,異なる
ディレクトリ間のインポートが簡単に記述出来るようになります.
次回はflaskの事について書きたいと思います.