Finding the instance reference of an object
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Tue Oct 28 02:33:26 EDT 2008
En Tue, 28 Oct 2008 01:16:04 -0200, Dale Roberts <gooberts at gmail.com>
escribió:
> So, then, what to tell a C++ programmer about how Python passes
> arguments? You say: tell them Python only passes by value. I disagree,
> because I think that would confuse them. Rather than try to map C++
> conventions onto Python, I think it is more useful to just tell them how
> it really works. Maybe a few statements like this:
>
> All values in Python are objects, from simple integers up to complex
> user-defined classes.
>
> An assignment in Python binds a variable name to an object. The
> internal "value" of the variable is the memory address of an object,
> and can be seen with id(var), but is rarely needed in practice.
>
> The "value" that gets passed in a Python function call is the address
> of an object (the id()).
>
> When making a function call, myfunc(var), the value of id(var) can
> never be changed by the function.
>
> Not sure if these are the best. To get into much more detail, you have
> to start explaining mutable and immutable objects and such.
I don't think the above explanation is desirable, nor needed. Objects in
Python don't have an "address" - it's just a CPython implementation
detail. The fact that id() returns that address is just an implementation
detail too. The calling mechanism should be explained without refering to
those irrelevant details.
--
Gabriel Genellina
More information about the Python-list
mailing list