On Sun, May 11, 2014 at 5:10 AM, Ethan Furman <et...@stoneleaf.us> wrote: > And if you don't like that argument (although it is a perfectly sound and > correct argument), think of the module name space: > > > ret = spam > spam = 23 > > will net you a simple NameError, because spam has not yet been created.
What about this, though: ret = int int = 23 That will *not* net you a NameError, because 'int' exists in an outer scope (builtins). You can create a new module-scope variable and it will immediately begin to shadow a builtin; you can delete that variable and it will immediately cease to shadow that builtin. That's the difference I'm talking about. With function-local variables, they all have to exist (as other responses confirmed, that *is* a language guarantee), even though some of them aren't bound to anything yet. ChrisA -- https://mail.python.org/mailman/listinfo/python-list