Subscribed unsubscribe Subscribe Subscribe

Python, web, Algorithm 技術的なメモ

技術的なメモを書いていきます.pythonistaを目指しています.

__init__.pyの役割

Python

今,Instant Flask Web Development でflaskの勉強をしています.その本で,__init__.pypythonのディレクトリを表すために用いますと書かれていて,他に意味があるのかなと思い,調べました. 今回は__init__.pyの意味について軽くまとめます.

__init__.pyの役割

__init__.pyの主な役割は2つあります. まず,1つ目は__init__.pypythonスクリプトがあるディレクトリを表す役割をなします.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の事について書きたいと思います.

参考文献

What is init.py for?

Instant Flask Web Development