Chris Kaynor wrote: > I was thinking along the lines of replacing: > > if __name__ == "__main__": > <<<block of code>>> > > with > > @main > def myFunction() > <<<<block of code>> > > Both blocks of code will be called at the same time.
You can't guarantee that, because you cannot tell ahead of time when the "if __name__" statement will be run. It is *usually* at the end of the file, but that's just the normal useful convention, it is not a hard requirement. The current idiom uses normal, unmagical execution of Python code. When the interpreter reaches the "if __name__ ..." statement, it executes that statement, just like every other statement. There's no magic involved here, and in fact I have written code with *multiple* such "if __name__" blocks. Here's a sketch of the sort of thing I mean: import a import b if __name__ == '__main__': import c as d else: import d def this(): ... def that(): ... flag = __name__ == '__main__' process(flag) if __name__ == '__main__' or condition(): print "still executing" main() print "done loading" (I haven't ever done *all* of these things in a *single* file, but I have done all these things at one time or another.) There's no way that any automatic system can match that for flexibility or simplicity. -- Steven -- https://mail.python.org/mailman/listinfo/python-list