我试图弄清楚是否可以将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,我猜测是因为“返回名称”在代码中的“返回城市”之前出现)
我正在尝试做什么?
答案 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())