"nibudh" <[EMAIL PROTECTED]> wrote > I looked over my code (all 41 lines!) and couldn't find anything, > then on a > hunch i moved the def statement _above_ the rest of my code and hey > presto > it worked. > > I vaguely understand why this is happening, but can someone explain > it to > me.
Its pretty simple. Python processes the file top to bottom. If it comes upon a name that it doesn't recofgnise it generates an error. Thus: ############# print foo(42) def foo(x): return x * 2 ############## will generate an error because at the point where the print statement tries to execute foo(42), foo does not exist! This is one good reason to avoid putting executable code in the main body of a file but to always wrap it in a function like so: ############## def main() print foo(42) def foo(x): return x * 2 if __name__ == "__main__": main() ############### Now the code doesn't get executed until the last line of the file by which time all definitions have been executed and the program will work correctly. This also makes the module inherently more reusable since it can be imported without the main code being executed (the purpose of the if expression.) HTH, -- Alan Gauld Author of the Learn to Program web site http://www.freenetpages.co.uk/hp/alan.gauld _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor