可以将Python函数返回的两个不同值赋给两个变量吗?

2 投票
3 回答
583 浏览
提问于 2025-04-16 17:35

我在想,能不能把一个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)

撰写回答