モジュールのインポートをやり直す
まとめ
404 Not Found
Pythonのimportはシングルトンだそうです。importし直しても同じオブジェクトの名前空間を変えるだけ。モジュールをimportし直したいときは、
reload(foo)
みたいにすればok。
経緯
かんたんなスクリプトを書くのでも、対話シェルで実行しながら書いたほうがやりやすいので、モジュールみたいにして書いていましたが、メソッドを更新してモジュールのファイルを保存しても、対話シェルから実行した結果が変わりませんでした。なんとなくimportし直してみても変わらず。
foo.pyという名前で以下を作成して、
def foo(): print 'foo called'
対話シェルから実行。
In [1]: import foo In [2]: foo.foo() Out[2]: foo called
foo.pyを以下に書き換えて、
def foo(): print 'modified foo'
実行してみる。
In [3]: foo.foo() Out[3]: foo called # 変わらない In [4]: import foo # importし直してみても In [5]: foo.foo() Out[5]: foo called # やっぱり変わらない
という感じだったので、ドキュメントでも読むかーと思ってググったら、ばっちりのネタを解説してる上記のページがすぐ見つかりました。感謝。
In [6]: reload(foo) # リロード In [7]: foo.foo() Out[7]: modified foo # 変わったー!
なるほどー。勉強になりました。