What's wrong with this code?
Chris Angelico
rosuav at gmail.com
Mon Jul 23 11:24:29 EDT 2012
More information about the Python-list mailing list
Mon Jul 23 11:24:29 EDT 2012
- Previous message (by thread): What's wrong with this code?
- Next message (by thread): What's wrong with this code?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, Jul 24, 2012 at 12:50 AM, Stone Li <viewfromoffice at 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
- Previous message (by thread): What's wrong with this code?
- Next message (by thread): What's wrong with this code?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list