メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年2月19日火曜日

[Python][お勉強] Python入門(43) - import、fromステートメントで文字列を指定する

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 コメント: