如何使用函数的输出作为函数内另一个函数的输入

时间:2016-11-30 14:35:01

标签: python function python-3.x arguments

我目前正在学习Python并希望有人可以帮助我。 我对编码很新,所以如果解释得好的话会非常有用。

假设我有一个名为function1的函数返回:

return (row, column)

现在我正在编写另一个名为function2的函数。 在这个函数中,我需要调用say:

exampleItem.exampleName(row, column, name)

如何使用function1的输出作为row的上述行中的columnfunction2参数作为行和列?

我真的希望这是有道理的,因为我之前没有正确地写一个问题而受到严重的惩罚,因为我没有意识到这里的最佳做法。

3 个答案:

答案 0 :(得分:7)

在所有版本的Python中,您都可以:

row, column = function1()
exampleName(row, column, name)

在更新版本(3.5+)中,您可以使用解包来执行以下操作:

exampleName(*function1(), name)

如需进一步阅读,请参阅:PEP 448 -- Additional Unpacking Generalizations

答案 1 :(得分:6)

您可以使用星号*解压缩结果 - 这是一个元组 - 在将其作为参数放入另一个之后调用函数function1功能。这导致在第二个中提供从function1返回的元素作为位置参数:

exampleItem.exampleName(*function1(), name)

在Python 2.x中,您可以执行相同操作,但需要以关键字形式提供剩余的位置参数,以使其与*

exampleItem.exampleName(*function1(), name=name)

这也适用于Python 3.x,因此您没有可移植性问题。

当然,在先前使用row, column = function1()的语句中解压缩,然后按位置将它们提供给第二个函数:

exampleItem.exampleName(row, column, name)

是另一种选择。它最终落到了偏好: - )

答案 2 :(得分:2)

这称为" tuple unpacking",它接受元组(或列表)的部分并将它们用作参数。

如果f1(row, column)是返回(row, column)的函数(为了一个简单的例子):

a = f1(3, 4)
b = exampleItem.exampleName(*a, name="fish")

# Or, as a one-liner:
b = exampleItem.exampleName(*f1(3,4), name="fish")

这里的主要限制是在上面的tuple-unpacked参数(a之后,用*解包)之后,所有其他参数必须按名称分配,而不是位置。

如果您无法提供具体的参数名称,并且如果您仍在使用Python 2,则需要执行以下操作:

x, y = f1(3, 4) # unpacks the length-2 tuple into two variables
b = exampleItem.exampleName(x, y, "fish")

哪个不能制成单线。但是Python 3并不需要这样做,所以你可以做第一个例子而不需要在第三个参数上使用name=,如果你在Python 3中。

另一个相关注释:如果你使用**代替,你可以解压缩字典,它与元组解包相同,除了命名参数而不是位置参数。