Also there's the question of typo-driven bugs, where an attempted rebinding of "epsilon" instead cerated a reference called "epselon". (The epselon bug) This is the bane of fortran, and after generations it was generally agreed that optionally one could require all references to be declared (implicit none). Perl went throgh a similar process and implemented a "use strict" module. Experienced Pythonistas are oddly resistant to even contemplating this change, though in the Fortran and Perl worlds their usage quickly became practically universal.
I believe that enthusiasm for this construct in other languages is so strong that it should be prominently addressed in Python introductions and surveys, and that questions in this regard should be expected from newbies and patiently addressed. I also don't fully understand the profound aversion to this idea.
I myself am going back and forth on all this. I despise the fact that good fortran90 code often has more declarations than executables. Ed Ream (LEO's author) pointed out to me the Edward-Tufte-ness of Python. No wasted ink (except maybe the colons, which I do sometimes find myself forgetting on long edits...) I don't want Python to look like f90. What would be the point?
*If* the rebinding issue were to be addressed for bare names and the right-most name in a compound name (the only place where it is currently an issue), I imagine it would be by introducing a rebinding augmented assignment operator rather than by introducing variable declarations.
Or, more precisely, standard name binding would continue to serve in that role.
For Alex:
I figured out something resembling a justification for the difference in semantics between a rebinding operator and the rest of the augmented assignment operators: there's no magic method for binding a name, so there is no need for a magic method when simply rebinding one, whereas the other augmented assignment operators combine the name-binding with an operation which normally *can* be overridden, and the augmented assignment magic method is a convenience to allow the rebinding case of that operation to be optimised.
Cheers, Nick. Do I really want to add another PEP to the snoozing PEP 338, though?
-- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://boredomandlaziness.skystorm.net -- http://mail.python.org/mailman/listinfo/python-list