Paul Rudin <paul.nos...@rudin.co.uk>: > Marko Rauhamaa <ma...@pacujo.net> writes: >> The spec (<URL: https://docs.python.org/3/reference/datamodel.html>) >> uses the terms *identity* and *reference*, which are one-to-one. > > identity isn't the same thing as a name, identity is an inherent > property of an object - many names may refer to the same object.
x is y if and only if id(x) == id(y) However, sorry for muddling the discussion by bringing in the identity. I'll leave it out for now. >> So your "names" are *variables*. > > Informally yes, but "variable" has no meaning in the language reference. Really? How do you interpret these, then? Although the definition of assignment implies that overlaps between the left-hand side and the right-hand side are ‘simultaneous’ (for example a, b = b, a swaps two variables), overlaps within the collection of assigned-to variables occur left-to-right, sometimes resulting in confusion. <URL: https://docs.python.org/3/reference/simple_stmts.html?#assignme nt-statements> Assignments to __debug__ are illegal. The value for the built-in variable is determined when the interpreter starts. <URL: https://docs.python.org/3/reference/simple_stmts.html?#the-asse rt-statement> The public names defined by a module are determined by checking the module’s namespace for a variable named __all__ <URL: https://docs.python.org/3/reference/simple_stmts.html?#the-impo rt-statement> It would be impossible to assign to a global variable without global, although free variables may refer to globals without being declared global. <URL: https://docs.python.org/3/reference/simple_stmts.html?#the-glob al-statement> >> Unfortunately, virtually every word is overloaded and full of >> preconceived notions. Hence: "pegs", "leashes", "puppies". >> >> The main thing is to keep those three concepts apart from each other. >> Two notions will not suffice. > > Well - adding more things is confusing in IMO - we have a language > reference, let's just use the terms in the language reference. I have quoted "the language reference" quite a bit. Your turn. You would be correct that there is something of an faux elitism going around that is influencing the language spec as well to a degree. It appears some people consider "variables," "assignments," "pointers" etc to be too riff-raff. So people want to say Python is unlike C and has "names," "bindings," "references" etc. There's no shame in stating directly that Python has variables just like C even though Python's variables are not first-class. There's no difference between binding and assignment. And a reference is a synonym to a pointer. Python still has good stuff C doesn't, or even Java. Marko -- https://mail.python.org/mailman/listinfo/python-list