我正在寻找处理一组目标变量中调用的函数的不同数量的返回值。以下简化片段是一个起始示例:
def f1(): return 1,2,3
def f2(): return 4,5
a,b,c = f1()
a,b,c = f2() # How to massage this call: default of some sort?
因此,目标是将 2 或 3 个结果解包为三个输出变量。
考虑到被调用的f()
可能是(许多函数..)之一,大多数函数都只返回两个变量..但可能需要向其中一个添加第三个参数或其中两个。
这里的动机:现有的代码库目前仅返回两个变量。但我需要添加第三个。将现有代码大部分保留下来并简单地处理丢失的第三个参数会很有帮助。
这里可以使用什么结构?
最佳答案
通常,您可以将所有返回值保存到单个变量中,然后使用索引访问它们。
x1 = f1() # x1[0] = 1, x1[2] = 2, etc.
x2 = f2()
对于 Python 3:
如果您需要将 a,b,c
用于单独的代码段,您可以使用以下方式打包变量:
a,b,*c = f1()
a,b,*c = f2()
这将捕获 f1
或 f2
返回的前 2 个值之外的所有值作为 c
中的列表。
任何Python:
如果您使用的是 2.7 版本,则可以采取一些额外的步骤来确保分配 c
不会出错。您将函数的输出捕获为列表,然后使用 None
将列表扩展到变量的长度。之后就可以直接赋值给a,b,c
# assumes you have 3 variables: a,b,c
res = list(f2())
res += [None]*(3-len(res))
a,b,c = res
关于python - 处理不同数量的返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43313275/