python - 如何使用 lambda 函数使 'str' 对象可调用?

标签 python string lambda

我有一些预定义的功能,比如: 添加主机、编辑主机、删除主机。

现在根据收到的一些参数,我必须调用上述函数之一。 现在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/

相关文章:

java - 在 Java 8 中遇到 - JDK-8023339 : j. u.Arrays.asList().removeIf() 是 "lazy"抛出 java.lang.UnsupportedOperationException

Python字典将参数传递到函数中用作值

python - 当mysql查询包含python中的占位符时如何搜索武术比赛?

python - Python中对字符串元素求和

java - 对空格、 "("和 ")"进行字符串 split()

c# - 在 C# 中,为什么要使用表达式树以及何时需要使用它们?

python - Django model.delete() 方法返回成功删除但实际上没有删除

python - python中的多个返回与返回变量

java - 使用 Java 对字符串进行 90% 的子串化而不破坏 HTML

c++ - 泛型 lambda 与泛型函数给出不同的行为