私は理解できないPythonの動作を見ています。このレイアウトを考えてみましょう:Pythonモジュールをインポートしました。なぜその中のメンバーの再割り当てが他の場所でのインポートにも影響しますか?
project
| main.py
| test1.py
| test2.py
| config.py
main.py:
import config as conf
import test1
import test2
print(conf.test_var)
test1.test1()
print(conf.test_var)
test2.test2()
test1.py:
import config as conf
def test1():
conf.test_var = 'test1'
test2.py:
import config as conf
def test2():
print(conf.test_var)
config.py:
test_var = 'initial_value'
ので、python main.py
プロデュース:
initial_value
test1
test1
私は最後の行で混乱しています。私はをtest2.py
に再度インポートしているので、もう一度initial_value
を印刷すると思っていました。前の手順で行った変更が上書きされると思いました。私は何かを誤解していますか?
'reload(conf)'を間に入れてみて、その違いに注意してください。ロードされたモジュールはキャッシュされます。 'test?.py'に' conf'をロードすると、すでにロードされているモジュールへの参照が得られます。 – dhke
私は、現在の答えが状態にないことは、モジュールのインポートがそれが保持するスクリプトを実行しないということです。正しく指摘されているように、Pythonはモジュールをキャッシュします。 – Petar