On Sat, Sep 12, 2015 at 3:03 PM, Random832 <random...@fastmail.com> wrote: >> You can't, for example, keep the old reference (there are no references >> to references in Python), because they're not accessible as values in >> themselves. Once you assign a different reference, the old one is gone >> and can't be found again. > > You can keep it by copying it to somewhere. The pointer is the value, > not the variable, you don't _need_ a reference to it.
CPython happens to implement references using pointers, which leads a lot of people to think that Python's references are pointers in disguise. But Python (the language) does not have any concept of pointers or memory. An integer is not a GNU Multiprecision Bignum object, it is simply an integer. A string is not a series of bytes in Latin-1/UCS-2/UCS-4, it is a series of codepoints. Aside from fiddling around with ctypes (which isn't a supported action), there is nothing you can do within Python to find out what a reference "is"; there is literally ONE operation you can do with a reference, and that's to get at the object it refers to. (For example, you might think that the 'is' operator is comparing two references to see if they point to the same object. In CPython, it probably is implemented as a pointer comparison; but actually, it's comparing two objects to see if they're the same object.) Python does not have pointers, not because you can't do arithmetic on those pointers, but because they do not exist in the language spec. The Python interpreter in my brain, which I use frequently when diagnosing bugs (whether in my own or someone else's code), does not have pointers; I'm not prepared to guarantee that it's 100% compliant with the spec, but I know for sure that it _could be_, without adding any notion of pointers. C has pointers, and still would even pointer arithmetic were disallowed. The languages are architected differently. (Oh, and an object's identity is a special attribute of that object. It's not like its location in memory, which is an attribute of the reference to the object; it's a number that can be retrieved from the object itself.) ChrisA -- https://mail.python.org/mailman/listinfo/python-list