如果我定义一个函数1,它将可变数量的列表作为输入,并提供一个列表作为输出,如下所示:
def function1(*args):
size = len(args)
output = []
for k in range(size):
do_something
output.append(...)
return output
然后是第二个函数,它也将可变数量的列表作为输入(并返回一个列表),它调用第一个函数,如下所示:
def function2(*args):
size = len(args)
output = []
for k in range(size):
for index, line in enumerate(function1(args[k])):
do_something
return output
当我使用第二个函数时,除非我定义代码的第5行,否则我会收到错误:
for index, line in enumerate(function1(*args[k])):
我的问题是,当我从另一个功能区调用该函数时,是否还要声明输入数字是未定义的?
答案 0 :(得分:1)
考虑这三个例子,我们改变的是在{2}之间使用*
:
def fn1(*args):
print(args)
在[1]中:fn1('a','b',1)
('a','b',1)
def fn2(*args):
fn1(args)
在[2]中:fn2('a','b',1)
(('a','b',1),)
def fn3(*args):
fn1(*args)
在[3]中:fn3('a','b',1)
('a','b',1)
在第二个(fn2
)中我们没有使用args
解包*
,我们得到了一个嵌套在元组内的元组,这不是我们想要的。如果没有看到完整的回溯,我无法确定这是你的问题,但我怀疑如果你修改了如图所示的行后它就可以了。