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: this foo that '{"one":"foo","two":"bar"}' 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):

if __name__ == "__main__":


$ this foo
Hello from this foo
$ that '{"one":"foo","two":"bar"}'
Hello from that thing foo and thing bar
$ other baz
Hello from other baz