この便利な Q&Areload(whatever_module)
で、Python 3 で使用できることを見ましたimp.reload(whatever_module)
。
from whatever_module import *
私の質問は、インポートすると言っていたらどうなるでしょうか? それから私がwhatever_module
使用するときに参照する必要はありませんreload()
。モジュール全体をグローバル名前空間に投げ込んだことで私を怒鳴るつもりですか? :)
この便利な Q&Areload(whatever_module)
で、Python 3 で使用できることを見ましたimp.reload(whatever_module)
。
from whatever_module import *
私の質問は、インポートすると言っていたらどうなるでしょうか? それから私がwhatever_module
使用するときに参照する必要はありませんreload()
。モジュール全体をグローバル名前空間に投げ込んだことで私を怒鳴るつもりですか? :)
私は「これを一般的に行わない」というコンセンサスに同意しますが...
正解は次のとおりです。
import X
reload(X)
from X import Y # or * for that matter
使用しないでくださいimport *
。それは可読性を破壊します。
また、モジュールのリロードはほとんど役に立たないことに注意してください。モジュールをリロードした後にプログラムが最終的にどのような状態になるかを予測することはできないため、理解不能で再現不可能なバグを取得するのに最適な方法です。
あ
from module import *
からすべての「エクスポートされた」オブジェクトmodule
を取得し、それらをモジュール レベル (またはスコープがレベルであったもの) の名前にバインドします。モジュールを次のようにリロードできます。
reload(sys.modules['module'])
しかし、それはあなたにとって何の役にも立たないでしょう: あなたのスコープがレベルであったものは何でも、古いオブジェクトをまだ指しています。