python - 处理不同数量的返回变量

标签 python

我正在寻找处理一组目标变量中调用的函数的不同数量的返回值。以下简化片段是一个起始示例:

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()

这将捕获 f1f2 返回的前 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/

相关文章:

python - 如何将 .bin 解析为列表?

python - 使用 python/numpy 进行任意图像切片

python - tkinter 列表框 get(ACTIVE) 方法

python - Plotly Ipython - 显示(HTML)函数不显示 html 文件

python - 从 ipython 导入

python - 情节破折号 : data_table background color for individual cell

python - 如何使用pandas基于两个分类列的组合进行单热编码?

Python 调用记录。获取基类名称

python - Pandas iloc 错误索引导致减法问题

python - 直接在线运行一个Jupyter notebook(不用本地下载)