可以将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,我猜是因为代码里“return name”在“return city”之前)
我想做的这个事情,真的能做到吗?
3 个回答
0
如果一个函数返回多个值,你可以使用
a,b = zip(*function_calling())
2
你应该把 return name and city
改成 return (name, city)
,因为“and”在这里是用来做逻辑运算的。这样改了之后,你就可以用元组解包的方式来给变量赋值了:
name,city = authenticate()
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)