在Python中灵活解压返回的元组

问题描述 投票:0回答:2

在 Python 中,我可以从这样的函数返回多个值:

def myfunc():
    return 1, 2, 3

当我调用这个函数时,我需要像这样解压值:

a, b, c = myfunc()
# a = 1, b = 2, c = 3

如果我尝试这个,我会得到整个元组:

a = myfunc()
# a = (1, 2, 3)

我是否可以在不改变函数调用方式的情况下使上面的代码变得

a = 1
?我意识到我可以做类似
a, _, _ = myfunc()
的事情,但我不想改变函数的调用方式。 我只能更改函数定义。

换句话说,我想要这样的东西:

a, b, c = myfunc()
# a = 1, b = 2, c = 3

a, b = myfunc()
# a = 1, b = 2

a = myfunc()
# a = 1

感谢您的帮助!

python function return tuples
2个回答
0
投票

您可以使用星号表示法:

a, *_ = myfunc()

这会将 1 分配给

a
,并将元组的其余部分分配给 “匿名”变量
_


0
投票

上面@DYZ已经提到过,你可以从你的函数中检索指定数量的元组,如下所示:

def myfunc():
    return 1,2,3

a,b,c = myfunc()
print (a,b,c)

a,b,*_ = myfunc()
print (a,b)

a,*_  = myfunc()
print(a)

请注意,如果需要,我们必须仔细指定一次“丢弃”或“忽略”或“匿名变量”。

© www.soinside.com 2019 - 2024. All rights reserved.