Alan Gauld wrote: > "Kent Johnson" <[EMAIL PROTECTED]> wrote >> scripts. However this has no bearing on the current thread; for both >> imported modules and executed scripts, a function must be defined >> before >> it can be called. > > Yes, the bearing is in the way that Perl compiles its code. > Perl builds a name tree from the entire file before executing > so it doesn't rely on the order of definition, Python seems > to compile and execute code in a sequential manner and > therefore relies on the sequence being right.
It executes code in a sequential manner, and names are bound during execution, not compilation. That is the key difference. I guess you could say that the compiler doesn't forward any names to the execution phase; when a module starts executing, the only names in the module namespace are ['__builtins__', '__doc__', '__file__', '__name__'] You can see this if you import a module whose contents are just print dir() Any other names must be bound by executing code. > I'm not sure if the undefined name errors come from the compilation > or from the execution - does anyone else. I confess i've never looked > deeply into how Python actually does its complile/execute cycle. They come from execution. See my separate post about def, etc. being executable statements. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor