Posts Tagged ‘function’

call a function by knowing its name as a string

June 24, 2014 Leave a comment

I want to call a function but its name is stored in a string. How to do that?

I wanted to create a menu where the user can select which entry to call. It looks like this:

(1)[r] radio
(2)[ctd] create temp. directory
[m] menu
[q] <

In Python I stored it like this:

menu = OrderedDict()
menu[(1, 'r')] = ('radio', '')
menu[(2, 'ctd')] = ('create temp. directory', 'apps.temp_folder.create_temp_folder')

That is, if the user selects “1“, then must be called.

Here is the method that can call the appropriate function:

import importlib

def start_app(val):
    Call a function by name (string).
    Tip from here: .
    _, to_call = val
    function_string = to_call # ex.: ''
    mod_name, func_name = function_string.rsplit('.', 1)
    mod = importlib.import_module(mod_name)
    func = getattr(mod, func_name)

The tip is from here.