python 函数中的任意数量的参数

2024-04-28

我想学习如何在 python 函数中传递任意数量的参数,所以我以递归方式编写了一个简单的 sum 函数,如下所示:

def mySum(*args):
  if len(args) == 1:
    return args[0]
  else:
    return args[-1] + mySum(args[:-1])

但是当我测试时mySum(3, 4),我收到此错误:

TypeError: unsupported operand type(s) for +: 'int' and 'tuple'

有谁对此有想法并给出一些线索来纠正它?


这行:

return args[-1] + mySum(args[:-1])

args[:-1]返回参数元组的一个切片。我假设您的目标是使用该参数片段递归调用您的函数。不幸的是,您当前的代码只是使用单个对象(切片本身)调用您的函数。

相反,您想要做的是在展开这些参数的情况下进行调用。

return args[-1] + mySum(*args[:-1])
                        ^---- note the asterisk

这种技术被称为“解压参数列表 http://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists,”,星号有时(非正式地)称为“splat”运算符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 函数中的任意数量的参数 的相关文章

随机推荐