A question on modification of a list via a function invocation
Chris Angelico
rosuav at gmail.com
Tue Sep 5 23:51:45 EDT 2017
On Wed, Sep 6, 2017 at 1:42 PM, Stefan Ram <ram at zedat.fu-berlin.de> wrote:
> Steve D'Aprano <steve+python at pearwood.info> writes:
>>So in what sense are references part of the Python language?
>
> It would be possible to describe Python using a concept
> called "reference", it's just that the The Python Language
> Reference, Release 3.6.0 (PRL) does /not/ do this.
> And programming language experts usually use the terms that
> the language specification uses with the meaning that the
> language specification is giving them. And this is why I say
> that JavaScript and Python do not have references.
> (Except "attribute references".)
>
>>Inside the interpreter, you (probably?) could print out the value of the
>>pointer, or manipulate it in some fashion.
>
> Well, this /is/ from the PRL:
>
> »An object's identity never changes once it has been created;
> you may think of it as the object's address in memory.«.
> ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
> - The Python Language Reference, Release 3.6.0;
> 3.1 Objects, values and types
>
> It's not called "reference", it's called "identity". But it
> might agree with your idea of a pointer of an implementation.
> And you /can/ print it.
>
>>>> print( id( 'abc' ))
> 4163144
Printing out an address is only half the point (pun intended) of a
pointer - and the useless half. Given a pointer, you need to be able
to dereference it. How can you, given the id of a Python object,
access the object itself? The nearest I've ever seen is a function
that searches every object it can find, looking for one with the same
id.
I *might* be able to accept the argument that pointer arithmetic isn't
important (though I'm still of the opinion that without arithmetic,
they're just references/name bindings), but if you want to say that
the id() of a Python object is its pointer, you MUST demonstrate this
more basic feature.
ChrisA
More information about the Python-list
mailing list