Python函数“返回多个值”的实质是返回元组,通过解包赋值给多个变量;return x, y 与 return (x, y) 等效,而 return [x, y] 返回列表;解包要求变量数匹配,支持嵌套解包和*收集。
Python函数可以“返回多个值”,其实质是返回一个元组,再通过解包(unpacking)自动拆分到多个变量中。理解这一点,就能避免常见误解,比如以为Python有原生的“多返回值”类型。
当函数用逗号分隔多个表达式作为返回值时,Python会自动将其打包成一个元组:
示例:
def get_user():调用时用对应数量的变量接收,Python自动执行元组解包:
立即学习“Python免费学习笔记(深入)”;
ValueError: too many values to unpack 或 not enough values
_ 忽略不需要的值(如 name, _, role = get_user())* 收集剩余项(如 a, *b, c = [1,2,3,4,5] → b 得 [2,3,4])以下写法看似返回多个值,实则逻辑不同:
return (x, y) 和 return x, y 效果相同,都返回元组return [x, y] 返回的是列表,也能解包,但类型不同,影响后续操作(如不可哈希)None)解包可嵌套,适合处理结构化数据:
data = [("Alice", (28, "NY")), ("Bob", (31, "SF"))]也可将解包用于函数参数传递:
def greet(name, age):