Finding the instance reference of an object
gagsl-py2 at yahoo.com.ar
Tue Oct 28 07:33:26 CET 2008
En Tue, 28 Oct 2008 01:16:04 -0200, Dale Roberts <gooberts at gmail.com>
> 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.
More information about the Python-list