"Antoon Pardon" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > And if Nested variables are harmfull,
I don't know if anyone said that they were, but Guido obviously does not think so, or he would not have added them. So skip that. > what is then the big difference between rebinding them and mutating them A variable is a name. Name can be rebound (or maybe not) but they cannot be mutated. Only objects (with mutation methods) can be mutated. In other words, binding is a namespace action and mutation is an objectspace action. In Python, at least, the difference is fundamental. Or, in other other words, do not be fooled by the convenient but incorrect abbreviated phrase 'mutate a nested variable'. > that we should forbid the first and allow the second? Rebinding nested names is not forbidden; it has just not yet been added (see below). Being able to mutate a mutable object is automatic once you have a reference to it. In other words, it you can read the value, you can mutate it (if it is mutable). > I understand that python evolved and that this sometimes results > in things that in hindsight could have been done better. So does Guido. That is one explicit reason he gave for not choosing any of the nunerous proposals for the syntax and semantics of nested scope write access. In the face of anti-consensus among the developers and no particular personal preference, he decided, "Better to wait than roll the dice and make the wrong, hard to reverse, choice now". (Paraphrased quote) >I have to wonder if someone really thought this through at design time Giving the actual history of, if anything, too many people thinking too many different thoughts, this is almost funny. Recently however, Guido has rejected most proposals to focus attention on just a few variations and possibly gain a consensus. So I think there is at least half a chance that some sort of nested scope write access will appear in 2.6 or 3.0. Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list