I know it's too late but as long as<br>py3k will break everything, why not<br>add explicit introduction of local variables?<br><br>This is one place where Perl actually<br>gets something right with "use strict;" and<br>
"my variable=...;"<br><br>In particular there is a big conceptual difference<br>between creating a new variable and changing<br>a binding to an existing variable.  <br><br>You could make this difference explicit by saying<br>
<br>   # create local myvariable (error if exists) and assign value<br>   var myvariable=value;<br><br>   # rebind local myvariable (error if doesn't exist)<br>   myvariable = value;<br><br>This would allow catching a lot of nameerrors at<br>
compile time, and also name mistakes which don't<br>show up as nameerrors (like accidentally typing a<br>variable name wrong in such a way that it doesn't<br>fail the test cases, but only fails after deployment...).<br>
Any assignment with no associated "my" declaration<br>would automatically be an error at compile time.<br><br>As I say, I know it's too late.  I also know it's probably<br>not a new idea, but I couldn't locate it in a brief attempt.<br>
I also know that various python lint tools catch most name<br>problems like the above...<br><br>hmmm... I actually wouldn't mind the "my" keyword<br>instead of "var" since it is shorter and probably less<br>
frequently used in existing code... (btw, "yield" broke<br>every existing financial application :( ).<br><br>Just a thought.<br>   -- Aaron Watters<br><br>