What's a good way to handle lots of parameters using standard python modules & techniques when creating a function in a module that can be called from the command line or imported and called programmatically?
For example:
# my_thing.py
import argparse
def my_thing(
        param1=None, param2=None,
        param3=None, param4=None,
        param5=None, param6=None,
        param7=None, param8=None):
    # Do something with all those parameters
    pass
def main():
    parser = argparse.ArgumentParser()
    # add arguments
    args = parser.parse_args()
    my_thing(
        param1=args.param1, param2=args.param2,
        param3=args.param3, param4=args.param4,
        param5=args.param5, param6=args.param6,
        param7=args.param7, param8=args.param8):
if __name__ == "__main__":
    main()
or maybe this...
# my_thing.py
import argparse
def my_thing(params):
    # Do something with all those parameters
    pass
def main():
    parser = argparse.ArgumentParser()
    # add arguments
    args = parser.parse_args()
    params = {
        "param1":args.param1, "param2":args.param2,
        "param3":args.param3, "param4":args.param4,
        "param5":args.param5, "param6":args.param6,
        "param7":args.param7, "param8":args.param8}
    my_thing(params)
if __name__ == "__main__":
    main()
 
     
     
    