Python 3:依赖于其他函数的函数,缺少参数?

时间:2013-11-17 14:07:13

标签: python function python-3.x user-defined-functions typeerror

我有两个函数,后者依赖于第一个函数的结果。 它们都是使用浮点数的数学函数。

这两个功能的要点是:

def function1(a,aa,b,bb):
    # get result z from a and b
    # get error in result, zz, from raw errors, aa and bb
    print (z,zz)

def function2(z,zz,c,cc):
    # get result x from z and c
    # get error in result, xx, from zz and cc
    print (x,xx)

a,b和c是在函数外定义的测量变量 aa,bb和c是测量变量中的误差,也是在函数外部定义的。

定义函数后,我编写以下命令:

function2(function1(a,aa,b,bb),c,cc)

我希望function1会产生两个结果(z,zz),它们将被接受为function2的前两个参数。

相反,我得到错误“TypeError:function2()缺少1个必需的位置参数:'cc'

所以我假设function1最后只产生一个结果。我该如何解决这个问题?

此处的完整代码:http://tinyurl.com/sof-typeerror

1 个答案:

答案 0 :(得分:1)

如果你的函数返回多个参数,那么这些参数打包成一个元组。您应该使用*解压缩返回的参数,以将它们作为参数传递给另一个函数。但是,作为一种惯例,你不能将任何东西解压缩为第一个参数,因此,我宁愿建议以下内容。

function2( *(function1(a,aa,b,bb) + (c, cc)) ) # would work

function2(*function1(a,aa,b,bb),c,cc)          # won't work

如果您真的对后者无效或为什么会议感兴趣,请访问 - http://www.python.org/dev/peps/pep-3132/Unpacking arguments: only named arguments may follow *expression

此外,正如评论中所建议的那样,您应return参数&不只是打印它们。如下所示。

def function1(a,aa,b,bb):
    get result z from a and b
    get error in result, zz, from raw errors, aa and bb
    print (z,zz)
    return z, zz

def function2(z,zz,c,cc):
    get result x from z and c
    get error in result, xx, from zz and cc
    print (x,xx)
    return x, xx