On 16Nov2017 09:42, bvdp <b...@mellowood.ca> wrote:
In my original case, I think (!!!), the problem was that I had a variable in mod1.py and when I did the "from mod1 import myvarible" all was fine. Python create a new local-to-the-module variable and initialized it to the value it was set to in mod1. And at this point all is well. But, when mod1 changed the value of myvariable the change didn't get passed to the other modules. Of course, the reason for my confusion is that I'm thinking that python is using pointers :) Opps.

Maybe we need pointers in python <ducking>.

Thinking about this as pointers works pretty well. We call them references in Python because they are not (or need not be) memory addresses and C pointers are memory addresses. However the model is the same: an arrow from a variable name pointing at the place a value (the object) is stored.

Look:

 mod1.py: x = 1

making:

 mod1.x --> 1

Now consider:

 mod2.py: from mod1 import x

Making:

 mod1.x --> 1
            ^
 mod2.x ----+

both referring to the "1" object.

Now:
 mod2.py: x = 2

Making:

 mod1.x --> 1
 mod2.x --> 2

You see that mod1 is not adjusted. Versus:

 mod2.py: import mod1

Making:

 mod2.mod1 --> mod1, mod1.x --> 1

Then:

 mod2.py: mod1.x = 2

Making:

 mod2.mod1 --> mod1, mod1.x --> 2

Because you're adjusting the reference "mod1.x", _not_ the distinct reference "mod2.x".

Cheers,
Cameron Simpson <c...@cskk.id.au> (formerly c...@zip.com.au)

Draw little boxes with arrows.  It helps.       - Michael J. Eager
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to