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 <agustinscaramuzza@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-leave@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/