This gets discussed every now and again, and has thus far been rejected. Also see PEP 299 for a slightly different approach.
-- Eric V. Smith > On Nov 12, 2020, at 8:45 AM, Matt Wozniski <godlyg...@gmail.com> wrote: > > Currently, the simplest and most idiomatic way to check whether a module was > run as a script rather than imported is: > > if __name__ == "__main__": > > People generally learn this by rote memorization, because users often want the > ability to add testing code or command line interfaces to their modules before > they understand enough about Python's data model to have any idea why this > works. Understanding what's actually happening requires you to know that: > > 1. the script you ask Python to run is technically a module, > 2. every module has a unique name assigned to it, > 3. a module's `__name__` global stores this unique import name, > 4. and "__main__" is a magic name for the initial script's module. > > A new (writable) global attribute called `__main__` would simplify this case, > allowing users to simply test > > if __main__: > > It would behave as though > > __main__ = (__name__ == "__main__") > > is executed in each module's namespace before executing it. > > Because this would be writable, I don't see any backwards compatibility > issues. > It wouldn't negatively impact any modules that might already be defining > `__main__` (for example, by doing `import __main__`). They'd simply redefine > it > and go on using the `__main__` module as they always have. And a package with > a `__main__.py` does not have a `__main__` attribute. > > It would be easier to teach, easier to learn, and easier to memorize, and > a nice simplification for users at the cost of only very slightly more > complexity in the data model. > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/CUNE3Y2YSQQSTXFITSXKFRVPO6EM2DV7/ > Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/PDWTNUGIX4BRSMXNSMI2UGVRGCSZVQ3W/ Code of Conduct: http://python.org/psf/codeofconduct/