Re: What's wrong with this code?

Discussion in 'Python' started by Chris Angelico, Jul 23, 2012.

  1. On Tue, Jul 24, 2012 at 12:50 AM, Stone Li <> 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
     
    Chris Angelico, Jul 23, 2012
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. walala
    Replies:
    3
    Views:
    2,194
    Ralf Hildebrandt
    Sep 10, 2003
  2. willem oosthuizen

    What is wrong with the following code?

    willem oosthuizen, Oct 10, 2003, in forum: VHDL
    Replies:
    9
    Views:
    1,276
  3. Matthew
    Replies:
    7
    Views:
    673
    Priscilla Walmsley
    Jan 7, 2005
  4. David. E. Goble
    Replies:
    9
    Views:
    479
    David. E. Goble
    Feb 2, 2005
  5. kiran
    Replies:
    12
    Views:
    1,126
    Scott Sauyet
    Dec 7, 2011
Loading...

Share This Page