python - 控制函数中返回变量的数量

标签 python python-3.x return idl-programming-language multiple-variable-return

有没有一种方法可以定义一个函数,该函数根据用户期望的输出量知道要返回多少变量?

让我来说明这个想法。假设以下功能:

def function():
    a = 1
    b = 2
    c = 3
    return a, b, c

然后,我希望我的函数表现如下:

>>> x = function()
>>> x
1

>>> x, y = function()
>>> x
1
>>> y
2

>>> x, y, z = function()
>>> x
1
>>> y
2
>>> z
3

python 中是否有函数或概念可以帮助我实现这一目标?也许装饰器?

欢迎任何想法!

PD:我的Python水平还是很基础的。


编辑:

我目前正在从 IDL 转向 Python。所以我错过了 IDL 中的一个不错的功能,您实际上可以选择返回任意数量的变量,方法如下:

FUNCTION function, a=a, b=b, c=c

 a=1
 b=2
 c=3

RETURN, a

然后你可以简单地问你想要得到什么

IDL> x=function()
IDL> print, x
1
IDL> x=function(y=b)
IDL> print, x
1
IDL> print, y
2
IDL> x=function(y=b, z=c)
IDL> print, x
1
IDL> print, y
2
IDL> print, c
3

最佳答案

除了返回不同的值,你可以用不同的方式调用它:

x, *_ = function()
x, y, *_ = function()
x, y, z, *_ = function()   # *_ is optional here if it only returns 3 things

这样做会将所有未使用的返回值分配给 _ 变量,因此如果您希望它们尽早获得 gc,则必须 del _

关于python - 控制函数中返回变量的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49820567/

相关文章:

javascript - 在 Bokeh 上将文件从服务器发送到客户端

django - ModelSerializer.update() 和 ModelViewSet.update() 之间的区别

python - 将 classification_report 的准确度返回到列表中

Python。基于两个键和一个字典对二维列表进行排序

python - 根据条件连接 csv 文件

python - 将对象列表转换为列表字典

shell - 如何从较低级别的函数中止 fish 脚本?

python - 修改函数中的变量没有结果

Python C 扩展向异常添加属性

python - 为什么从 python 脚本编译的 .exe 无法连接到远程 MS Access 数据库? [HY024]