以下行返回错误:
self.m, self.userCodeToUserNameList, self.itemsList, self.userToKeyHash, self.fileToKeyHash = readUserFileMatrixFromFile(x,True)
该函数实际返回6个值。但在这种情况下,最后一个是无用的(无)。所以我只想存储5个。
是否可以忽略最后一个值?
答案 0 :(得分:11)
您可以使用Python 3中的*rest
。
>>> x, y, z, *rest = 1, 2, 3, 4, 5, 6, 7
>>> x
1
>>> y
2
>>> rest
[4, 5, 6, 7]
通过这种方式,您始终可以确保不会遇到解包问题。
答案 1 :(得分:3)
使用_
来表示不需要的变量很常见。
a, b, c, d, e, _ = my_func_that_gives_6_values()
在迭代一定次数时也经常使用它。
[random.random() for _ in range(10)] # gives 10 random values
Python 3还为赋值引入了*
,类似于*args
如何获取任意数量的参数。要忽略任意数量的参数,只需将它们分配给*_
:
a, b, c, d, e, *_ = my_func_that_gives_5_or_more_values()
这可以在作业的任何时候使用;你可以获取第一个和最后一个值并忽略中间的填充:
>>> a, b, c, *_, x, y, z = range(10)
>>> print(a, b, c, '...', x, y, z)
0 1 2 ... 7 8 9
答案 2 :(得分:0)
将最后一个切片:
self.m, self.userCodeToUserNameList, \
self.itemsList, self.userToKeyHash, \
self.fileToKeyHash = readUserFileMatrixFromFile(x,True)[:-1]
在TigerhawkT3's comment之后编辑:
请注意,仅当返回对象支持切片时才有效。
答案 3 :(得分:-1)
只需使用一次性变量' _'
self.m,
self.userCodeToUserNameList,
self.itemsList,
self.userToKeyHash,
self.fileToKeyHash,
_ = readUserFileMatrixFromFile(x,True)
这里' _'被故意忽略。