Python: Substitute variable values before passing to another function
我想确定输入字符串是否是有效的函数名。在传递给isfunction调用之前,是否有任何方法可以替换变量的值?
1 2 3 4 5 6 7 8 | #!/usr/bin/python def testFunc(): print"Hello world!"; return; myString ="testFunc"; isfunction(testFunc); // This returns **True** isfunction(myString); // This returns **False** |
假设要检查是否存在已加载函数,可以尝试执行以下操作:
1 2 3 4 5 6 7 8 9 10 11 12 | try: if hasattr(myString, '__call__'): func = myString elif myString in dir(__builtins__): func = eval(myString) else: func = globals()[myString] except KeyError: #this is the fail condition # you can use func() |
第一个
在任何情况下,如果您真的计划执行这些函数,我会仔细考虑。执行任意函数可能是风险业务。
编辑:
我添加了另一行以更加确定,除非我们愿意,否则实际上不会执行代码。也把它改了,这样它会更整洁一点。
一种方法是使用
1 2 3 4 | try: eval(myString) except NameError: # not a function |