使用带有动态参数的函数调用时的元组索引

AFw*_*cxx 2 python

>>> class Test(object):
>>>    def test(self,*arg):
>>>       print(arg[0],arg[1])
>>> p = Test()
>>> t = 2,3
>>> p.test(t)
Run Code Online (Sandbox Code Playgroud)

给我IndexError:元组索引超出范围

这是为什么?以及如何获得该元组的值?

Mar*_*ers 6

你只传入一个参数(整个元组(2, 3)),所以只arg[0]存在; 如果您将元组值视为单独的参数,请使用*args调用语法应用它们:

p.test(*t)
Run Code Online (Sandbox Code Playgroud)

另一种方法是不在*arg函数定义中使用catchall参数:

def test(self, arg):
Run Code Online (Sandbox Code Playgroud)

现在你的函数有两个正常的位置参数,selfarg.你只能传入一个参数,如果那是你的元组,arg[0]并且arg[1]会按预期工作.