55

この便利な Q&Areload(whatever_module)で、Python 3 で使用できることを見ましたimp.reload(whatever_module)

from whatever_module import *私の質問は、インポートすると言っていたらどうなるでしょうか? それから私がwhatever_module使用するときに参照する必要はありませんreload()。モジュール全体をグローバル名前空間に投げ込んだことで私を怒鳴るつもりですか? :)

4

8 に答える 8

59

私は「これを一般的に行わない」というコンセンサスに同意しますが...

正解は次のとおりです。

import X
reload(X)
from X import Y  # or * for that matter
于 2012-07-30T15:27:58.583 に答える
8

使用しないでくださいimport *。それは可読性を破壊します。

また、モジュールのリロードはほとんど役に立たないことに注意してください。モジュールをリロードした後にプログラムが最終的にどのような状態になるかを予測することはできないため、理解不能で再現不可能なバグを取得するのに最適な方法です。

于 2011-04-01T17:42:29.750 に答える
4

from module import *

からすべての「エクスポートされた」オブジェクトmoduleを取得し、それらをモジュール レベル (またはスコープがレベルであったもの) の名前にバインドします。モジュールを次のようにリロードできます。

reload(sys.modules['module'])

しかし、それはあなたにとって何の役にも立たないでしょう: あなたのスコープがレベルであったものは何でも、古いオブジェクトをまだ指しています。

于 2011-06-10T17:46:05.783 に答える