2012-10-11 90 views
0

根据我希望更改函数test_var_args_call以接收大量参数的原则,我如何才能实现在函数上使用* args?带有广泛参数的函数

贝娄,即时通讯发送我有什么变种的例子。

def test_var_args_call(arg1, arg2, arg3,arg4,arg5,arg6,arg7,arg8,arg9): 
    print arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9 

args = (1,2,3,4,5,6,7,8,9) 
test_var_args_call(*args) 

Basicaly,而不是:

def test_var_args_call(arg1, arg2, arg3,arg4,arg5,arg6,arg7,arg8,arg9)

什么,我想的是:

def test_var_args_call(**args)

回答

8

使用一个星号,它会工作:

def test_var_args_call(*args): 
    print args 

或者是:

def test_var_args_call(*args): 
    print ' '.join(map(str, args)) 

,如果你希望你的输出完全匹配。

+0

'print args'将打印列表的字符串转换,而我认为他想要的是'print''.join(args)'。编辑 –

+0

将转换添加到字符串,否则返回TypeError:序列项目1:预期字符串,发现int int –

+1

@Thales:然后连接没有区别;你把'args'元组变成一个字符串,然后加入它(一个没有操作)。我会纠正的。 –