Python函数中的动态输出

Python函数中的动态输出,python,function,output,Python,Function,Output,当我们使用def时,我们可以使用**kwargs和*args来定义函数的动态输入 返回元组是否有类似的功能,我一直在寻找这样的功能: def foo(data): return 2,1 a,b=foo(5) a=2 b=1 a=foo(5) a=2 但是,如果我只声明一个要解包的值,它会将整个元组发送到那里: a=foo(5) a=(2,1) 我可以使用“如果”语句,但我想知道是否有不那么麻烦的语句。我也可以使用一些hold变量来存储该值,但是我的返回值可能有点大,只有一些占位符

当我们使用def时,我们可以使用**kwargs和*args来定义函数的动态输入

返回元组是否有类似的功能,我一直在寻找这样的功能:

def foo(data):
    return 2,1

a,b=foo(5)
a=2
b=1
a=foo(5)
a=2
但是,如果我只声明一个要解包的值,它会将整个元组发送到那里:

a=foo(5)
a=(2,1)
我可以使用“如果”语句,但我想知道是否有不那么麻烦的语句。我也可以使用一些hold变量来存储该值,但是我的返回值可能有点大,只有一些占位符


谢谢

如果需要完全概括返回值,可以执行以下操作:

def function_that_could_return_anything(data): 
    # do stuff
    return_args = ['list', 'of', 'return', 'values']
    return_kwargs = {'dict': 0, 'of': 1, 'return': 2, 'values': 3}
    return return_args, return_kwargs

a, b = function_that_could_return_anything(...)
for thing in  a: 
    # do stuff

for item in b.items(): 
    # do stuff
在我看来,只返回字典,然后使用
get()
访问参数会更简单:


我不太明白你到底在问什么,所以我猜一下


如果你有时想使用一个值,考虑a:


或者,如果您使用的是Python3.x,则需要简单地解包一些值:

def foo(data):
    return 3,2,1

a, *remainder = foo(5) # a==3, remainder==[2,1]
a, *remainder, c = foo(5) # a==3, remainder==[2], c==1
a, b, c, *remainder = foo(5) # a==3, b==2, c==1, remainder==[]
有时,名称
\u
用于表示您正在丢弃该值:

a, *_ = foo(5)

如果希望
a
始终包含第一个值,则可以执行
a=foo(5)[0]
。这就是你想要的,还是你需要一个更一般的解决方案?你到底想让你的多个结果值发生什么?马吕斯,我想这就是我想要的,只是觉得有点不对劲,想知道是否有更复杂的方法
def foo(data):
    return 3,2,1

a, *remainder = foo(5) # a==3, remainder==[2,1]
a, *remainder, c = foo(5) # a==3, remainder==[2], c==1
a, b, c, *remainder = foo(5) # a==3, b==2, c==1, remainder==[]
a, *_ = foo(5)