[Python-ideas] Replacing the if __name__ == "__main__" idiom (was Re: making a module callable)
Terry Reedy
tjreedy at udel.edu
Sun Nov 24 22:21:12 CET 2013
On 11/24/2013 2:10 PM, Guido van Rossum wrote:
> Haven't followed all of this, but perhaps the simplest thing would be to
> define a new builtin function that returns True in the namespace of the
> main module and false everywhere else. It could be implemented by
> pulling '__name__' out of the caller's local namespace and comparing it
> to '__main__'. We could name this function __main__(), or perhaps less
> dramatic, is_main(). Then you could write
>
> if is_main():
> <do your main code>
Writing 'is_main' (or anything else) instead of '__name__=='__main__'
seems silly if it would be the only thing breaking back compatibility.
> For people who want to use this idiom on older platforms too they can
> easily implement it themselves using sys._getframe.
...if one know about sys._getframe and how to use it. The leading
underscore implies that it is subject to change in each version.
Writing an import (from somewhere dependable) for such a function will
be as many keystrokes as writing the idiom. For my main project, I have
a template file that includes 'if __name__.. <run test>' along with
other project boilerplate.
--
Terry Jan Reedy
More information about the Python-ideas
mailing list