Question about Pass-by-object-reference?
Ned Batchelder
ned at nedbatchelder.com
Tue Jul 22 15:32:19 EDT 2014
On 7/22/14 3:04 PM, fl wrote:
> Hi,
> I learn Python function call on tutorial. There is a link on this subject.
> http://robertheaton.com/2014/02/09/pythons-pass-by-object-reference-as-explained-by-philip-k-dick/
>
> Although it explains clearly, the figure makes me puzzled.
>
> ""Python is different. As we know, in Python, "Object references are passed by
> value".
>
> A function receives a reference to (and will access) the same object in memory as
> used by the caller. However, it does not receive the box that the caller is
> storing this object in; as in pass-by-value, the function provides its own box and
> creates a new variable for itself. Let's try appending again:""
>
> On the figure, it shows that the result is [0, 1] (Am I right on the figure?)
>
This is a topic that often confuses people new to Python. The article
you linked to seems very confusing to me. My own take on how to explain
it is here: http://nedbatchelder.com/text/names.html
>
> When I enter the command lines on my computer:
>>>> list=[0]
>>>> append(list)
>>>> print(list)
> [0]
>
> How to understand my result and that figure?
You should have gotten [0, 1], you must have different code than was
shown in the article. I recommend putting the code into a .py file, and
running it all at once. Then if it doesn't do what you expect, you can
show the entire .py file when asking for help.
>
>
>
> Thanks,
>
--
Ned Batchelder, http://nedbatchelder.com
More information about the Python-list
mailing list