我有一个Python脚本,它创建了一个自己函数的字典,我希望它通过使用YARP读入函数名和参数来执行它们(尽管YARP的知识与这个问题无关)。在
我创建了一个名为“inc”的字符串列表,该列表由进入程序的值填充。第一项是函数名,列表中的任何其他字符串都是参数。我创建了一个名为“methods”的字典,其中键是函数名,值是对函数对象的引用(使用inspect模块)。我将函数的返回值存储在变量“result”中。在
下面的代码片段显示了我目前使用的简化版本,它工作正常,但不能处理多个参数的函数。为了避免这个问题,如果函数需要更多参数,我使用一个列表:
if len(inc) == 1:
result = methods[inc[0]]() # call method with 0 arguments
elif len(inc) == 2:
result = methods[inc[0]](inc[1]) # call method passing a string
else:
args = []
result = methods(inc[0])(inc[1:]) # call method passing a list
理想情况下,我想改变这一点,以便我的函数可以有任意数量的参数,但我不知道如何才能做到这一点。我是Python新手,我看过文档和各种网站,只是找不到解决方案。我尝试过创建一个参数元组之类的方法,但这也行不通,因为它最终将整个元组作为一个参数传入。在
有没有更好的方法来解决这个问题,比如创建某种表示一组参数的对象并将其传递给函数?如有任何建议,我们将不胜感激!在
你应该去看看https://stackoverflow.com/a/3394898/1395668。在
你要找的魔法是*。将此应用于列表,它会将项解压到函数的参数字段中:
查看**查看dict的相同方法
这种混合结构有点奇怪:
有两个分开的信息不是更自然吗?在
^{pr2}$你能做的
(通常,我不会将函数名绑定到变量,但最好是函数本身。)
相关问题 更多 >
编程相关推荐