Issue 1542166: global variable: multiple id()-addresses (original) (raw)
The attachment contains an example where one single global variable appears at two different positions when applying the 'id(...)' function. The following files are attached:
core.py: contains the definition of the global variable, two example functions, and a minimal class definition.
test.py: a test program displaying that the global variable in core.py has two addresses.
result.txt: the output of the test.py procedure.
In practical this means that a variable 'my_module.global_var' may refer to two different objects!
Logged In: YES user_id=849994
In not_so_simple(), you reassign global_var. That means that it is bound to a different object afterwards.
The name "global_var" you imported into the test module, however, is bound to the original global_var object, and this binding will not change. If that's not what you want, you'll have to do "import core" and refer to "core.global_var".
Additionally, let me point out that using "global" to declare a name as global in a function that does not reassign that name is unnecessary.
Closing as Invalid.