On 24/07/2012 02:19, Andrew Cooper wrote:
On 23/07/2012 15:50, Stone Li wrote:
I'm totally confused by this code:

Code:

     a = None
     b = None
     c = None
     d = None
     x = [[a,b],
          [c,d]]
     e,f = x[1]
     print e,f
     c = 1
     d = 2
     print e,f
     e = 1
     f = 2
     print c,d

Output:

     None None
     None None
     1 2



I'm expecting the code as:

     None None
     1 2
     1 2



What's wrong?
And this question made my GUI program totally out of control.
Thanks

c = 1 and d = 2 are overwriting the variable c (= None) and d (= None)
with new variables 1 and 2.  As x already captured c and d while they
were none, the variables e and f do not change (not would the, even if
you subsequently changed x)

Python is a statically scoped language, whereas the functionality you
are expecting would be an example of dynamically scoped.

Care to reveal your programming background?

~Andrew


<duck and cover>

strictly speaking Python doesn't have variables, it has names. This will possibly start a flame war which, by the standards of this ng/ml, will be an intense conflagration, hence the duck and cover.

</duck and cover>

--
Cheers.

Mark Lawrence.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to