前几天在网上搜索,发现一篇关于python字典的有趣文章。这是关于使用字典中的键来调用函数。在那篇文章中,作者定义了一些函数,然后定义了一个字典,其键与函数名完全相同。然后他可以从用户那里获取输入参数并调用相同的方法(类似于实现 case-break)
之后我意识到同样的事情,但有些不同。我想知道如何实现这一点。
如果我有一个函数:
def fullName( name = "noName", family = "noFamily" ):
return name += family
现在如果我有一个像这样的字符串:
myString = "fullName( name = 'Joe', family = 'Brand' )"
有没有办法执行此查询并获取结果:JoeBrand
例如,我记得我们可以给 exec() 语句一个字符串,它会为我们完成它。但我不确定这种特殊情况,也不知道Python中的有效方法。我也将非常感激帮助我如何处理该函数的返回值,例如在我的例子中,如何打印该函数返回的全名?
这并不能完全回答你的问题,但也许它仍然有帮助:
如上所述,eval
如果可能的话应该避免。我认为更好的方法是使用字典解包。这也是非常动态的并且不易出错。
Example:
def fullName(name = "noName", family = "noFamily"):
return name + family
functionList = {'fullName': fullName}
function = 'fullName'
parameters = {'name': 'Foo', 'family': 'Bar'}
print functionList[function](**parameters)
# prints FooBar
parameters = {'name': 'Foo'}
print functionList[function](**parameters)
# prints FoonoFamily
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)