Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Re: What's wrong with this code? (http://www.velocityreviews.com/forums/t948447-re-whats-wrong-with-this-code.html)

Chris Angelico 07-23-2012 03:24 PM

Re: What's wrong with this code?
 
On Tue, Jul 24, 2012 at 12:50 AM, Stone Li <viewfromoffice@gmail.com> wrote:
>
> I'm totally confused by this code:
>
> Code:


Boiling it down to just the bit that matters:

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

When you assign "e,f = x", you're taking the iterable x and unpacking
its contents. There's no magical "referenceness" that makes e bind to
the same thing as c; all that happens is that the objects in x gain
additional references. When you rebind c and d later, that doesn't
change x, nor e/f.

What you've done is just this:

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

It's clear from this version that changing c and d shouldn't have any
effect on e and f. In Python, any time you use a named variable in an
expression, you can substitute the object that that name is
referencing - it's exactly the same. (That's one of the things I love
about Python. No silly rules about what you can do with a function
return value - if you have a function that returns a list, you can
directly subscript or slice it. Yay!)

ChrisA


All times are GMT. The time now is 12:24 PM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.