雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2009-12-03

[]パッケージに関する覚え書き パッケージに関する覚え書き - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - パッケージに関する覚え書き - 雲雀は高く空を舞い パッケージに関する覚え書き - 雲雀は高く空を舞い のブックマークコメント

パッケージについて

__init__.pyの入ったディレクトリをパッケージとしてimportできる。Mac OS Xのバンドルみたいな感じ。

また、ディレクトリは多層構造にできるけど、その際各ディレクトリに__init__.pyが必要。

__init__.pyはパッケージインポートの祭の初期化メソッドなどを記すが、空でもかまわない。


パッケージのインポート

Sound/
    __init__.py
    Format/
        __init__.py
        echo.py
        sorround.py
     Filters/
        __init__.py
        equalizer.py
        vocoder.py

このようなパッケージがあった場合、echo.pyをインポートするにはimport Sound.Format.echofrom Sound.Format import echoなどとする.

echo.py内の関数echofileterを使用する場合、import Sound.Format.echoとした場合はSound.Format.echo.echofilter(input, output)とする。

from Sound.Format impor echoとした場合はecho.echofilter(input, output)とできる。

またfrom Sound.Format.echo import echofileterと、直接関数をインポートすることもでき、この場合はechofilter(input, output)と使える.

from package import itemとした場合、itemはサブパッケージ、サブモジュール、モジュール内で定義されている関数、クラス、変数などを指定できる。

import package.itemとした場合、itemに指定できるのは、モジュールかパッケージのみ。

パッケージ内での暗黙のあるいは明示的な相対import

1) 暗黙の相対パスimport

パッケージ内でのimport itemの実行はまずパッケージ内で探索されその後標準検索パスを見る。

import されたモジュールが現在のパッケージ (現在のモジュールをサブモジュールにしているパッケージ) 内に見つからなかった場合、 import 文は指定した名前のトップレベルのモジュールを検索する。

モジュール Sound.Filters.vocoder で Sound.Effects パッケージの echo モジュールをimportしたいときは、 from Sound.Effects import echoとする。

2) 明示的な相対パスimport

モジュール Sound.Filters.vocoderから他のパッケージやモジュールをimportする際はfrom .. import Effects, from ..Effects import echo, from . import equalizerなどとする.

3) もちろん絶対パスimport も行えるので可読性などのためには絶対パスimportが良いのでは

トラックバック - http://chick.g.hatena.ne.jp/allegro/20091203
テクノラティプロフィール