"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

Reply via email to