On Sun, Sep 24, 2017 at 8:18 AM, Bill <bill_nos...@whoknows.net> wrote: > Stephan Houben wrote: >> >> Op 2017-09-23, Rick Johnson schreef <rantingrickjohn...@gmail.com>: >>> >>> These pissing contests over how values are passed in Python >>> are totally irrelevant. What does it matter? Nothing will be >>> gained or lost by arguing over which is true, or not. Unless >>> the distinction is preventing you from doing something that >>> you'd like to do, or unless you want to argue that one >>> "value passing method" would bring X, Y or Z benefits over >>> the other, what does it matter? >> >> Amen. >> > > All one has to do, I think, is consider (1) that passing objects by "making > copies" of them, would be prohibitively expensive and consider that > something else has to happen as an alternative, and (2) understand that in > Python, objects don't have names, they have references (which have names). > The rest could be "implementation dependent" (no?) To be amusing, how did > the chicken pass an egg to the_other_side_of_the_road(e)? Could the egg get > crushed (stay tuned)?
Actually they don't "have" references in any real sense of possession. An object "has" things like its type, its attributes, etc etc; if you have a reference to an object, you can query it for its type. But you can't ask an object if there's a reference to it over here or there. (Yes, I know that sys.getrefcount exists in CPython, but this isn't part of the language's definition. Also, even that is just a counter - you can't find specific references.) An object may have a reference to other objects (eg a list's contents), but it's a one-way thing - there's no way to find all the references to this object. So more accurate would be to say that objects don't have names, but names refer to objects. When you assign to a simple name, you cause that name to refer to the object you gave it. ChrisA -- https://mail.python.org/mailman/listinfo/python-list