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/

Reply via email to