On Sat, May 02, 2015 at 04:25:41PM -0700, Alex McFerron wrote: > trying to understand why this is true [...] > question: if y=x from step 2 (the copy job) is just creating a pointer y > that points to the same thing as x then why when i set x = {} in step 5 > does that also not cause y to equal {}? > > what am i not understanding about python dictionaries?
Python, like most modern languages, is neither copy-by-value nor copy-by-reference. Python uses *exactly* the same name-binding mechanism for all values, regardless of type, and all names, whether they are global variables, function parameters, or anything else. I discuss this question as it applies to function arguments here: http://import-that.dreamwidth.org/1130.html but the same reasoning applies to any other assignment. The important thing to remember is that y = x doesn't make a copy of x, it just makes y refer to the same object as x currently refers to. This is *not the same* as making y refer to x (that is, y and x are permanently linked to be alternative names for the same variable). Can you see the difference? If not, I'm happy to respond with more detail. -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor