I\'m looking for a better way to call functions based on a variable in Python vs using if/else statements like below. Each status code has a corresponding function
you might find getattr useful, I guess
import module
getattr(module, status.lower())(*args, **kwargs)
it seams that you can use getattr in a slightly different (in my opinion more elegant way)
import math
getattr(math, 'sin')(1)
or if function is imported like below
from math import sin
sin is now in namespace so you can call it by
vars()['sin'](1)
Look at this: getattra as a function dispatcher
Some improvement to SilentGhost's answer:
globals()[status.lower()](*args, **kwargs)
if you want to call the function defined in the current module.
Though it looks ugly. I'd use the solution with dictionary.
I encountered the same problem previously. Have a look at this question, I think its what you are looking for.
Dictionary or If Statements
Hope this is helpful
Eef
some change from previous one:
funcs = {
'CONNECT': connect,
'RAWFEED': rawfeed,
'RAWCONFIG' : rawconfig,
'TESTFEED': testfeed
}
func = funcs.get('status')
if func:
func(*args, **kwargs)