如何只从python中的函数返回的4个参数中获得2个?

时间:2014-05-11 00:54:15

标签: python

我的函数getCompMove返回4个值:

def getCompMove(x,y, pile1, pile2):
    # some calculation, values are changed 
    return x,y, pile1, pile2

我需要以两种不同的方式称呼它

使用所有4个返回的结果

x, y, pile1, pile2 = getCompMove(x,y, pile1, pile2)

并且仅使用返回元组的最后两部分:

pile1, pile2 = getCompMove(x,y, pile1, pile2)

最后一行代码将在运行时因Too many values to unpack

而失败

问题:如何从功能中重新获得4个中的2个值?有可能吗?

1 个答案:

答案 0 :(得分:4)

你可以做几件事;最常见的是:

  • 忽略前两个返回值:

    _, _, pile1, pile2 = getCompMove(x,y, pile1, pile2)
    
    按惯例,

    _是您计划忽略的作业的名称。

    在Python 3中,可以使用*前缀指定一个包含全部的分配目标:

    *_, pile1, pile2 = getCompMove(x,y, pile1, pile2)
    

    其中Python将最后两个参数适合pile1pile2,并将剩下的内容分配给_

  • 切换返回的元组:

    pile1, pile2 = getCompMove(x,y, pile1, pile2)[-2:]
    

    其中[-2:]选择最后两个值。