Lets say I have a function bar inside a module called foo.py . Somewhere inside foo.py, I want to be able to call bar() from the string \"bar\". Ho
globals is probably easier to understand. It returns the current module's __dict__, so you could do:
func_I_want = globals()['bar'] #Get the function
func_I_want() #call it
If you really want the module object, you can get it from sys.modules (but you usually don't need it):
import sys.modules
this_mod = sys.modules[__name__]
func = getattr(this_mod,'bar')
func()
Note that in general, you should ask yourself why you want to do this. This will allow any function to be called via a string -- which is probably user input... This can have potentially bad side effects if you accidentally give users access to the wrong functions.
Use a dictionary that keeps the mapping of functions you want to call:
if __name__ == '__main__':
funcnames = {'bar': bar}
funcnames['bar']()