我有一个表格的字符串列表:
['function1', 'function2']
我想将它们作为方法执行:
function1(myVar)
function2(myVar)
编程。
什么是'正确'的方式?
答案 0 :(得分:3)
如果你真的需要使用函数名(字符串),最安全的办法是保留允许函数名到函数的映射,即:
allowed_functions = {
"function1": function1,
"function2": function2,
# etc
}
然后查找该映射:
def applyfunc(funcname, *args, **kw):
func = allowed_func.get(funcname, None)
if func is None:
raise ValueError("func '%s' is not allowed" % funcname)
return func(*args, **kw)
这与使用locals()
但方式更安全(并且更容易维护)的Nils Werner解决方案非常相似。
否则,请记住python函数是对象(正如您在上面的示例中所注意到的那样),所以如果你想要的只是一个函数列表,那么它就像它可以得到的那样简单:
funcs = [function1, function2)
for func in funcs:
print func(myvar)
答案 1 :(得分:2)
public ActionResult BestuuurEdit(int id)
{
using (var db = new PlanToolEntities())
{
Persoon persoon = db.Persoon.Find(id);
if(persoon == null)
{
return HttpNotFound();
}
return View(persoon);
}
}
在此上下文中返回所有局部变量的locals()
,您的函数应该在其中。
dict
答案 2 :(得分:1)
如果您要调用的那些函数位于模块中,则可以通过getattr
import your_module
method_names = ['function1', 'function2']
for name in method_names:
func = gettattr(your_module, name)
# invoke now
func() # Pass in your arguments if needed.