回答編集履歴

1

不十分な回答に追記

2020/04/02 06:36

投稿

suomo
suomo

スコア82

test CHANGED
@@ -1,3 +1,21 @@
1
+ 追記
2
+
3
+ まず、質問者様の
4
+
5
+ > ・importしたモジュールのグローバル変数の初期化は、import元でimportした時点でのみ行われる
6
+
7
+
8
+
9
+ この仮説は正しいものです。importするスクリプトは、import時に一度評価されるだけです。それ以降importしたメソッドを呼んでも、Test.pyのtest1=5の部分が再実行されるわけではないので、値は更新
10
+
11
+ されません。(もちろん`Test.test1=5`などと明示的に変更する場合は別です)
12
+
13
+
14
+
15
+ (追記ここまで)
16
+
17
+
18
+
1
19
  Pythonでは同名のモジュールのimportは一度だけしか行われません。2回目のimport時は既にimportされていることを確認して何も行わない仕様になっています。したがって、グローバル変数が更新されていないわけではなく、モジュール全体が更新されていないわけです。
2
20
 
3
21