def function_1(a,b,c,d):
print('{}{}{}{}'.format(a,b,c,d))
return
def function_2():
t=y=u=i= 5
return t,y,u,i
function_1(function_2())
我希望python首先执行函数2,然后将每个t,y,u和i返回作为function1的输入,但是我却得到:
TypeError: function_1() missing 3 required positional arguments: 'b', 'c', and 'd'
我了解到function2的输出位于单个对象中,或者将function2视为输入函数,而不是执行。
如何更改代码以按预期执行? (来自function2的每个输出变量都被视为到function1的输入变量)
答案 0 :(得分:2)
您需要一个splat运算符。
function_1(*function_2())
function_2()
返回一个元组(5, 5, 5, 5)
。要将其作为一组四个参数(而不是一个四元素元组作为一个参数)进行传递,请使用splat运算符*
密切相关的是this question
答案 1 :(得分:0)
这可能有点尴尬,但是实际上您可以将函数作为参数本身pss,然后将其分解!
def function_1(func):
print('{}{}{}{}'.format(*func))
return
def function_2():
t=y=u=i= 5
return t,y,u,i
function_1(function_2())
输出:
5555