[EMAIL PROTECTED] wrote: > Try this: > > def myfunc(): > print "helo" > > s = "myfunc()" > a = eval(s) >
No, please don't try that. Good uses for eval are *very* rare, and this isn't one of them. Use the 'a = locals()[x]()' suggestion (or vars() instead of locals()), or even better put all the functions callable by this method into a class and use getattr() on an instance of the class. A Pythonic way to do this sort of thing is to put all the functions that are callable indirectly into a class and give them names which contain a prefix to make it obvious that they are callable in this way and then add the prefix onto the string: class C: def command_myfunc(self): return 42 def default_command(self): raise NotImplementedError('Unknown command') def execute(self, s): return getattr(self, 'command_'+s, self.default_command)() commands = C() print commands.execute('myfunc') That way you can be quickly tell which functions can be called indirectly and which can't; you can control what happens when no suitable function exists; and you can easily extend the functionality by subclassing your base class. -- http://mail.python.org/mailman/listinfo/python-list