是否可以将python函数中的两个不同返回值分配给两个单独的变量?

时间:2011-05-13 17:15:45

标签: python

我试图弄清楚是否可以将python函数中的两个不同返回值分配给两个单独的变量。

这是函数,它返回名称城市值。

def authenticate():

name = raw_input("What is your name?    ")

city = raw_input("What city do you live in?    ")


if name != "Jerry Seinfeld" or city != "New York":
    print """

    Access denied

    """

else:
    print """


    Authenticated

    """
    return name and city

现在,我想将返回的值分配给两个变量 a和b

我只知道如何分配一个值,就像这样。

a = authenticate()

(这实际上将城市值分配给a,我猜测是因为“返回名称”在代码中的“返回城市”之前出现)

我正在尝试做什么?

3 个答案:

答案 0 :(得分:8)

Python支持元组解包

def foo():
  return 'bar', 42

a, b = foo()

它甚至适用于其他序列。

a, b = [c, d]

Python 3.x扩展了语法。

a, b, *c = (1, 2, 3, 4, 5)

答案 1 :(得分:2)

您应该将return name and city(因为“和”的使用是逻辑表达式)更改为return (name, city)以返回元组。现在,您可以使用元组解包来分配值:

name,city = authenticate() 

答案 2 :(得分:0)

如果函数返回更多值,您可以使用

a,b = zip(*function_calling())