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/