Python 如何调用返回多个值的函数

Python 如何调用返回多个值的函数,python,function,Python,Function,如何调用返回两个变量的函数 例如: def F1(x): do something with x return y, z def F2(y, z, q): do lots of other things return profit 应该使用什么语法从F2调用F1,以明确F1的哪个输出是y,哪个是z 我的直觉是 F2(F1(x), q) 这很好,但是如何在F2中调用y和z?您可以返回元组: a, b = F1(x) 您可以使用*args来执行以下功能: 演

如何调用返回两个变量的函数

例如:

def F1(x):
    do something with x
    return y, z

def F2(y, z, q):
    do lots of other things
    return profit
应该使用什么语法从
F2
调用
F1
,以明确
F1
的哪个输出是
y
,哪个是
z

我的直觉是

F2(F1(x), q) 

这很好,但是如何在
F2
中调用
y
z

您可以返回元组:

a, b = F1(x)

您可以使用
*args
来执行以下功能:

演示:

当函数返回多个参数时,您可以在调用时使用
*
解压元组,将所有参数传递给函数:

>>> def A():
...    return 5,6
... 
>>> F('q',*A())
5 6
q
您已接近解决方案。 F1返回2个值,但如果直接输入F2参数,F2将在输入中看到

(y,z) <--- tuple
q <--- variable
另一种解决方案是使用
*args
首先通过q,然后通过y和z

def F2(q, *args):
    y, z = *args
    some other code

def F1(x):
    some code
    return y, z

F2(q, *F1(x))

如果您想这样调用
F2
,可以使用:

F2(*F1(x), q=q)
这将解压
F1
的结果,并且只有命名的参数才能跟随这种操作,因此您必须按其名称调用
q
。但首先解压
F1
的结果可能更有意义

y, z = F1(x)
F2(y, z, q)

不是很优雅,但您可以将
F2
称为:

F2(F1(x)[0], F1(x)[1], q)

这将返回
利润

您可以将
F2
函数定义更改为以下内容:

def F2((y, z), q):
并称之为:

F2(F1(x), q)

F1
返回的元组的第0个元素将作为从
F2
返回的
y
,返回的元组的第1个元素将作为从
F2
返回的
z

为什么不直接做y,z=f1(x)p=f2(y,z,q)
Hi@Florin Ghita。例如,您的意思是我使用F1中返回的变量名引用F2中的值吗?@Busterdust,谢谢!在F2之外,我会使用y,z=F1(x),然后在F2中调用这些变量?有没有办法不用中间步骤就能做到这一点?谢谢。这是一个非常清楚和翔实的回答。
def F2((y, z), q):
F2(F1(x), q)