Perfect! That's exactly the right rant! Thank you Naomi.
Python names are post-its, not buckets. You effectively counter the "bucket brigade". Hah hah. Here's me chatting with Steve Holden a few minutes ago, across many time zones (dinner time there, just getting to be lunch time here). === *Kirby*: This posting of two minutes ago goes back to your laptop drawings at Pycon, of namespace versus objectspace. An ongoing theme in Python Pedagogy... https://mail.python.org/pipermail/edu-sig/2016-February/011372.html <https://www.google.com/url?q=https%3A%2F%2Fmail.python.org%2Fpipermail%2Fedu-sig%2F2016-February%2F011372.html&sa=D&sntz=1&usg=AFQjCNGIza5x8WaXR0iMd7N8XJ1XzWjAtg> *Steve*: And yet I have had arguments with people who complain when I say that names in Python are simply object references *Kirby*: They're references with hooks in that dot notation becomes a conduit i.e. one applies A.method() to A to control whatever A names. So a name is a reference with controller capabilities? It's not quite like a luggage tag, so much as a TV remote. You can press the tag in such a way as to make the suitcase snap open. *Steve*: I'd rather say dot notation is a way of changing the namespace in which a name is expected to be found. If that's "controlling" then we agree *Kirby*: Given the name exists, e.g. A, using A.method() does not alter the namespace though, i.e. A is still the only name we've got. A may have mutated nonetheless e.g. L.sort(). *Steve*: What I meant was that A.b means that b is looked up in A's namespace *Kirby*: Yes. A TV remote is a namespace in that each button belongs to the remote. R.on, R.off, R.volume(+1) etc. The TV is what R controls i.e. is the object R names. *Steve*: There is nothing a function/method can to to alter which object is bound to a name used as a variable because bindings to arguments occur only the function/method's namespace. It can, however, mutate the objects to which it is passed references. *Kirby*: In my posting to edu-sig I suggest that objects may be constant or variable, corresponding to immutable versus mutable. Names, however, in being simply identifiers, are not themselves "variables". The list itself is a variable (a mutable object). The name L is simply a name. And it should not be represented as a "container" of something. *Steve*: Later. Dinner time now! *Kirby*: OK, eat hardy! On Mon, Feb 15, 2016 at 11:15 AM, Naomi Ceder <naomi.ce...@gmail.com> wrote: > The short answer is that I agree with you. > > In fact, the link you shared is an example of my favourite incorrect > mental model, which even prompted me to post this rant > https://learnpython.wordpress.com/2015/05/21/notes-on-teaching-python-mental-models/ > some months ago. > > TL;DR - "in Python 'variables' are post-its, not buckets". (to use one of > my own homely metaphors) > > Cheers, > Naomi > >
_______________________________________________ Edu-sig mailing list Edu-sig@python.org https://mail.python.org/mailman/listinfo/edu-sig