如果你经常使用Python的第三方科学计算库或者AI库,你会发现这些库的一些方法喜欢一次性返回非常多的值,像下面这样:
>>> def calc():
... return 1, 2, 3, 4, 6
...
>>> calc()
(1, 2, 3, 4, 6)
这是一种严重违背Python编码规范的写法,所以我非常不建议各位跟着数据工程师或者人工智能研究员学习Python入门,这帮人会毁了你的Python。
那么如果一个第三方库已经这样写了,而你只想要它返回的前两个数字怎么办?如果像下面这样写,会导致报错:
>>> a, b = calc()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
此时,你可以使用*来把多余的值封装到一个单独的变量中:
>>> a, b, *c = calc()
>>> a
1
>>> b
2
>>> c
[3, 4, 6]