Ben Finney <ben+pyt...@benfinney.id.au> writes: > With the significant difference that “pointer” implies that it has its > own value accessible directly by the running program, such as a pointer > in C.
Its own value *is* what you're accessing when you assign or return it. You just can't do math on it, but there are lots of things you can't do math on. > That's different from a “reference”, which to my understanding implies > the running program does *not* normally have direct access to it as a > distinct value. The only way you can use a reference is to get at the > object to which it refers. In C++, references cannot be reassigned. I consider *that* the fundamental difference - a pointer is a variable that you can reassign and return; a reference always refers to the same object once created. > That's the distinction I've been reying on for years, anyway: Python's > names are references, collections are collections of references, etc. > They aren't pointers because you can't get them as a distinct value; you > can only use them to refer to the object at the other end. Anyway, maybe we do need a term to distinguish Python/C#/Java pointers from C/C++ pointers - maybe call it a "non-arithmetic" pointer, since the key thing about it is you can't do pointer arithmetic on them to get the object "next to" the one it points at. -- https://mail.python.org/mailman/listinfo/python-list