WedWonder: Scripts and Modules
> On 11 Sep 2019, at 21:24, DL Neil via Python-list <python-list at python.org> wrote:
> In this day-and-age do you have a script in live/production-use, which is also a module? What is the justification/use case?
> (discounting distutils and similar installation tools, or unit testing methodology)
> There are over 500 questions on StackOverflow which refer to Python's
> if __name__ == __main__:
> construct. Even more if you include the idea of a main() multiple entry-point.
> This construct enables code to distinguish between being "run" as a "script", and being imported as a "module". (which is not in question)
In my mind this is a question about what side-effects of importing a module are
desireable and which are not.
A trivia script does not need the __name__ == '__main__' as its all about its side effects.
As scripts become more complex having it run on import might make debugging harder
and prevents reuse.
For example I will import a script at the REPL and examine it and call function in it to
help me understand and fix problems. Having a __name__ == '__main__' is important
to allow this.
I often have modules that are part of a larger program that have their own main() functions
to unittest or give access to parsers etc.
In large projects with many modules import with side-effect can make for a maintenance