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