On 12/10/2010 2:22 PM Ian said...
On Dec 10, 3:06 pm, Stefaan Himpe<stefaan.hi...@gmail.com> wrote:
Somehow, in the first session I cannot modify the global variable a
returned from f, but in the second session I can. To my eye, the only
difference seems to be a namespace. Can anyone shine some light on this
matter?
It's not the same global variable. In the second session, you import
the module test and bind it to the name "test" in the main namespace.
"test.a" and "test.f" refer to the objects named "a" and "f" in the
test namespace.
In the first session, you import all the variables exported by the
module test and bind them using the same names in the main namespace.
Thus "a" and "test.a" refer to the same int; and "f" and "test.f"
refer to the same function, but they are not the same variables. When
you rebind the name "a", it does not also magically rebind "test.a",
and vice versa.
Here's an example of what Ian's explained showing that f's global
namespace is the test module:
em...@paj39:~$ cat > test.py
a = 3
def f():
global a
return a
em...@paj39:~$ python
Python 2.6.4rc2 (r264rc2:75497, Oct 20 2009, 02:55:11)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from test import *
>>> import test
>>> a
3
>>> a = 4
>>> f()
3
>>> test.a = 5
>>> f()
5
>>>
--
http://mail.python.org/mailman/listinfo/python-list