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
if status == 'CONNECT':
return connect(*args, **kwargs)
elif status == 'RAWFEED':
return rawfeed(*args, **kwargs)
elif status == 'RAWCONFIG':
return rawconfig(*args, **kwargs)
elif status == 'TESTFEED':
return testfeed(*args, **kwargs)
...
I assume this will require some sort of factory function but unsure as to the syntax
解决方案
The canonical way to do this is to use a dictionary to emulate switch or if/elif. You will find several questions to similar problems here on SO.
Put your functions into a dictionary with your status codes as keys:
funcs = {
'CONNECT': connect,
'RAWFEED': rawfeed,
'RAWCONFIG' : rawconfig,
'TESTFEED': testfeed
}
funcs[status](*args, **kwargs)