【发布时间】:2011-05-07 02:55:14
【问题描述】:
前几天我在网上搜索,发现一篇关于python字典的有趣文章。这是关于使用字典中的键来调用函数。在那篇文章中,作者定义了一些函数,然后是一个与函数名称完全相同的字典。然后他可以从用户那里获取一个输入参数并调用相同的方法(比如实现 case break) 在那之后,我意识到同样的事情,但不知何故不同。我想知道如何实现这一点。 如果我有一个功能:
def fullName( name = "noName", family = "noFamily" ):
return name += family
如果我有这样的字符串:
myString = "fullName( name = 'Joe', family = 'Brand' )"
有没有办法执行这个查询并得到结果:JoeBrand
例如,我记得我们可能会给 exec() 语句一个字符串,它会为我们做这件事。但我不确定这种特殊情况,也不知道 Python 中的有效方法。我也将非常感谢帮助我如何处理该函数的返回值,例如在我的情况下如何打印该函数返回的全名?
【问题讨论】:
-
你的函数将返回 None...使用 + 而不是 +=
-
要完成此操作,请使用:getattr(myString, 'fullName')(name='Joe', family='Brand') [查看页面顶部链接的重复问题]
-
[注意:getattr() 用于此帖子重复的问题的最佳答案,但未在下文提及。我认为出现在此页面本身会有所帮助,因此我违反了在 cmets 中回答问题的惯例。]