我想从两个独立变量的函数中返回两个值。 例如:

def select_choice():
    loop = 1
    row = 0
    while loop == 1:
        print('''Choose from the following options?:
                 1. Row 1
                 2. Row 2
                 3. Row 3''')

        row = int(input("Which row would you like to move the card from?: "))
        if row == 1:
            i = 2
            card = list_a[-1]
        elif row == 2:
            i = 1
            card = list_b[-1]
        elif row == 3:
            i = 0
            card = list_c[-1]
        return i
        return card

我希望能够单独使用这些值。当我尝试使用return I, card时,它返回一个元组,这不是我想要的。


当前回答

def test():
    ....
    return r1, r2, r3, ....

>> ret_val = test()
>> print ret_val
(r1, r2, r3, ....)

现在您可以对元组做任何您喜欢的事情。

其他回答

这是另一种选择。如果你返回作为列表,那么它很容易得到的值。

def select_choice():
    ...
    return [i, card]

values = select_choice()

print values[0]
print values[1]
def test():
    r1 = 1
    r2 = 2
    r3 = 3
    return r1, r2, r3

x,y,z = test()
print x
print y
print z


> test.py 
1
2
3

我想从两个独立变量的函数中返回两个值。

你认为通话端会是什么样子?你不能写= select_choice();B = select_choice(),因为这将调用函数两次。

值不会“在变量中”返回;Python不是这样工作的。函数返回值(对象)。变量只是给定上下文中值的名称。当您调用一个函数并将返回值赋给某个位置时,您所做的就是在调用上下文中为接收到的值指定一个名称。函数不会为你将值“放入一个变量”,而是赋值操作(不用担心变量不是值的“存储”,但同样,只是一个名称)。

当我尝试使用return i, card时,它返回一个元组,这不是我想要的。

事实上,这正是你想要的。您所要做的就是再次分解元组。

我希望能够单独使用这些值。

只需要从元组中获取值。

最简单的方法就是拆包:

a, b = select_choice()
def test():
    ....
    return r1, r2, r3, ....

>> ret_val = test()
>> print ret_val
(r1, r2, r3, ....)

现在您可以对元组做任何您喜欢的事情。

使用list也可以返回多个值。检查下面的代码

def newFn():    #your function
  result = []    #defining blank list which is to be return
  r1 = 'return1'    #first value
  r2 = 'return2'    #second value
  result.append(r1)    #adding first value in list
  result.append(r2)    #adding second value in list
  return result    #returning your list

ret_val1 = newFn()[1]    #you can get any desired result from it
print ret_val1    #print/manipulate your your result