import、fromステートメントではモジュール名を指定するが、
時としてimportするモジュールを動的に決定したい場合があるそうな。
その場合はざっと、
- execステートメントを使う
- __import__関数を使う
execステートメントを使った例
abcという名のモジュールがあったとする。
モジュール名に文字列を指定すると、、、
>>> import "abc"
File "<stdin>", line 1
import "abc"
^
SyntaxError: invalid syntax
>>>
となる。
そこでexecステートメントを使用する。
>>> exec "import abc"
>>> abc.X
[1, 2, 3, 4, 5]
>>>
execを使えばモジュール名を文字列で指定できる。
__import__ビルトイン関数を使う例
>>> zzz = __import__("abc")
>>> zzz.X
[1, 2, 3, 4, 5]
>>>
な感じ。
__import__関数はモジュールオブジェクトを返すので戻り値を代入する変数が必要。
また、execステートメントでは実行する度にコードのコンパイルが必要になるので、
パフォーマンスが低いとのこと。パフォーマンスのことを考えれば__import__関数を
使った方が良いとのこと。
ふーん。
おしまい。
.
0 コメント:
コメントを投稿