I think you might find plac[1] and fire[2] rather interesting. I do feel an
explicit __run__ would go against the spirit of "explicit is better than
implicit" a bit...

[1] https://micheles.github.io/plac/
[2] https://github.com/google/python-fire


On Tue, Jul 30, 2019, 8:03 PM <agustinscaramu...@gmail.com> wrote:

> Maybe the def __main__() argument is already a dead horse, given the
> number of discussions it has created that have ended nowhere, but I think
> one argument in favour of its implementation would be including argument
> parsing in it, for example:
>
> # main.py
> def __run__(first_num, second_num, print_operation=False):
>     """
>     Adds two numbers.
>
>     positional arguments:
>         - first_num: the first number.
>         - second_num: the second number.
>
>     optional arguments:
>         - print_operation: prints the sum operation to stdout.
>     """
>     result = int(first_num) + int(second_num)
>     if print_operation:
>         print(f'{first_num} + {second_num} = {result}')
>     else:
>         print(result)
>
> $ python main.py -h
> Adds two numbers.
>
> positional parameters:
>     - first_num: the first number.
>     - second_num: the second number.
>
> optional arguments:
>     - print_operation: prints the sum operation to stdout.
>
> $ python main.py 1 2 --verbose
> 1 + 2 = 3
>
> $ python main.py 1 2
> 3
>
> The -h flag would print the function docstring. We could also add type
> hints for casting (I'm not entirely sure how feasible this is):
>
> def __run__(first_num: int, second_num: int, print_operation=False):
>     ...
>     result = first_num + second_num  # no need for casting here
>     ...
>
> Since __main__ is already a built-in function, I abstained from using it
> as the designated function name (I picked __run__, but any other
> suggestions would be welcome, also thought of __entrypoint__, __exec__).
> Thoughts?
> _______________________________________________
> 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/IKTXZMTKGXWJB2IUZCWZNJEQARTAMWYB/
> 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/I6JQ2JL2SKH7BFCSLGT235FEIQMX2VTK/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to