Python: Use a Dictionary to Control Function Calling
Rather than using a long list of if-then or case statments, you can use a Python dictionary to control which function is called depending on an argument:
#!/usr/bin/env python3
from sys import argv
"""Example for using a dictionary to map function calls from
argument variables.
Usage:
fn_map.py this foo
fn_map.py that '{"one":"foo","two":"bar"}'
fn_map.py other baz
"""
# Three functions to do stuff
def do_this(thing):
print(f"Hello from this {thing}")
def do_that(things):
# In case some functions use different amounts of arguments, use keyword arguments
dict_things = eval(things)
print(f"Hello from that thing {dict_things['one']} and thing {dict_things['two']}")
def do_other(thing):
print(f"Hello from other {thing}")
# Dictionary to define which argument calls which function.
# The dictionary key maps the command line argument to the
# associated function.
functions_map = {
"this" : do_this,
"that" : do_that,
"other": do_other,
}
# First argument is the function name
# Second argument is the function's argument
def main(fn,op):
functions_map[fn](op)
if __name__ == "__main__":
main(argv[1],argv[2])
Test:
$ fn_map.py this foo
Hello from this foo
$ fn_map.py that '{"one":"foo","two":"bar"}'
Hello from that thing foo and thing bar
$ fn_map.py other baz
Hello from other baz