我有一个 Python 脚本,它创建一个包含自己函数的字典,我希望它通过使用 YARP 读取函数名称和参数来执行它们(尽管 YARP 的知识与这个问题无关)。
我创建了一个名为“inc”的字符串列表,该列表由进入程序的值填充。第一项是函数名,列表中的任何其他字符串都是参数。我创建了一个名为“methods”的字典,其中键是函数名,值是对函数对象的引用(使用检查模块)。我将函数的返回值存储在变量“结果”中。
下面的代码片段显示了我目前使用的简化版本,它运行良好,但无法处理具有多个参数的函数。为了避免这种情况,如果函数需要更多参数,我会使用列表:
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 新手,我查看了文档和各种网站 - 我只是找不到解决方案。我尝试过创建参数元组之类的方法,但这也不起作用,因为它最终将整个元组作为一个参数传入。
这个问题有没有更好的解决方案,比如创建某种代表一组参数的对象并将其传递给函数?任何建议将不胜感激!