"Guess?!?" <[EMAIL PROTECTED]> wrote
*Module Name eli.py*
x = 0
y = [1, 2]
def whitney():
print 'whitney'
def printValues():
print x , y
*When I imported the Module*
from eli import x, y, printValues
Note that by doing this you are not really importing the module
but the names from the module into your name space.
printValues()
y[0] = 'cat'
This is changing the value of the y variable which is in the
eli module.
x = 'dog'
This is creaating a new x value in your local namespace.
printValues()
This prints the values from the eli module.
Running module "eli"
0 [1, 2]
0 ['cat', 2]
x is unchanged at zero.
y is also unchanged but the content is changed
Is it because x = 'dog' is local variable and y being
a list is a mutable object that is changed
Yes, although being picky about the term local its not
strictly true since local means inside a function or method
In your case you created a new global (ie module scope)
variable x which masked the imported one.
Also once we reload the module .... every value reverts to its
original
value .. Am I Right?
Yes, but you have not "loaded" the module yet, only the
names from within it.
HTH,
--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor