下面的行返回一个错误:ValueError:解压缩的值太多 - 是否可以忽略一个值?
self.m, self.userCodeToUserNameList, self.itemsList, self.userToKeyHash, self.fileToKeyHash = readUserFileMatrixFromFile(x,True)
该函数实际上返回6个值。但在这种情况下,最后一个是无用的(其无)。所以我想只存储5.
是否可以忽略最后一个值?
下面的行返回一个错误:ValueError:解压缩的值太多 - 是否可以忽略一个值?
self.m, self.userCodeToUserNameList, self.itemsList, self.userToKeyHash, self.fileToKeyHash = readUserFileMatrixFromFile(x,True)
该函数实际上返回6个值。但在这种情况下,最后一个是无用的(其无)。所以我想只存储5.
是否可以忽略最后一个值?
您可以使用*rest
在Python 3
>>> x, y, z, *rest = 1, 2, 3, 4, 5, 6, 7
>>> x
1
>>> y
2
>>> rest
[4, 5, 6, 7]
这种方式可以始终确保不会遇到拆包的问题。
OP只想丢弃一个值,所以我不认为这个语法是必需的(而且它实际上并没有被丢弃)。 – TigerhawkT3
我觉得这更通用。也许在OP的路上需要/想要的价值,或有更多的价值来解压...等 – Idos
通常使用_
来表示不需要的变量。
a, b, c, d, e, _ = my_func_that_gives_6_values()
这也经常用于迭代若干次。
[random.random() for _ in range(10)] # gives 10 random values
只是片最后一个出去:
self.m, self.userCodeToUserNameList, \
self.itemsList, self.userToKeyHash, \
self.fileToKeyHash = readUserFileMatrixFromFile(x,True)[:-1]
请注意,这只有当返回的对象支持切片。
这只适用于如果返回的对象支持切片。 – TigerhawkT3
@ TigerhawkT3你是对的。我并不是说这是最好的解决方案,但它可能对OP很有用。和其他方法已经被回答,这就是为什么他们不包括 – BusyAnt
@ TigerhawkT3答案编辑。 – BusyAnt
只是,使用扔掉的变量 '_'
self.m,
self.userCodeToUserNameList,
self.itemsList,
self.userToKeyHash,
self.fileToKeyHash,
_ = readUserFileMatrixFromFile(x,True)
这里 '_' 是故意忽略。
为什么不添加必要的变量来解压缩?将它命名为“未使用”或其他。 – TigerhawkT3
仅仅因为它看起来更干净没有无用的变量 –