This happens because you are using immutable values (ints and None), and importing variables is like passing things by value, not passing things by reference.
If you made global_mod.x a list, and manipulated its first element, it would work as you expect.
When you do from global_mod import x
, you are creating a name x
in your module with the same value as x
has in global_mod
. For things like functions and classes, this works as you would expect, because people (generally) don't re-assign to those names later.
As Alex points out, if you use import global_mod
, and then global_mod.x
, you will avoid the problem. The name you define in your module will be global_mod
, which always refers to the module you want, and then using attribute access to get at x
will get you the latest value of x
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…