In article <mailman.952.1235850376.11746.python-l...@python.org>, <rdmur...@bitdance.com> wrote: > >I think this is the key point. I am an experienced Python programmer, >and I had to think long and hard about what you were saying, Mark, in >order to understand how it applied to Python. I think this means that >your model and/or your level of abstraction is not "natural" when trying >to understand Python programs, and I think I may have figured out why.
Good job! I'll just add one little bit to your excellent rebuttal: >Assignment in Python changes a mapping (mutates a namespace object). In >this case the mapping being changed is the local function's namespace >mapping. We can't affect the caller's namespace mapping, because (in >this function) we don't have access to the caller's namespace object. >So I would diagram it like this: > > y (in global env.) -----> 'virgin' > > x (in function 'test') ----> 'clobbered' Although you later make clear that this model works well with lists, too, I personally find it easier to separate the concept of "name" (which is strictly the set of legal Python identifiers) with the more general concept of "target". Consider this: >>> L = [1, 2, 3] >>> L[1:1] = ['foo', 'bar'] What do you call ``L[1:1]``? I call that a target (and in fact, so do the Python docs). -- Aahz (a...@pythoncraft.com) <*> http://www.pythoncraft.com/ "All problems in computer science can be solved by another level of indirection." --Butler Lampson -- http://mail.python.org/mailman/listinfo/python-list