我有一些预定义的功能,比如: 添加主机、编辑主机、删除主机。
现在根据收到的一些参数,我必须调用上述函数之一。 现在param的值与上述函数之一相同。param的类型为str。
例如:如果参数是“addhost”,那么我应该能够调用 addhost()。
但是当我直接这样做时,它给了我错误,因为 'str' object is not callable
我应该如何根据收到的参数调用适当的函数??
P.S.我不想使用条件,我只想使用 lambda 函数之类的东西。
最佳答案
简单调用eval
:
>>> def addhost():
... print "Add host"
...
>>> def edithost():
... print "Edit host"
...
>>> def callstr(str):
... f = eval(str)
... f()
...
>>> callstr("addhost")
Add host
>>> callstr("edithost")
Edit host
>>>
如果你想使用 lambda:
>>> callstr2 = lambda x:eval(x)()
>>> callstr2("edithost")
Edit host
>>> callstr2("addhost")
Add host
关于python - 如何使用 lambda 函数使 'str' 对象可调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24334173/