对我来说,这真的很奇怪,因为默认情况下我认为解包操作会产生元组。
在我的情况下,我想使用prefix
键进行缓存,所以更喜欢使用元组。
# The r.h.s is a tuple, equivalent to (True, True, 100)
*prefix, seed = ml_logger.get_parameters("Args.attn", "Args.memory_gate", "Args.seed")
assert type(prefix) is list
我原以为解包会返回一个元组。
这里是相关的PEP: https://www.python.org/dev/peps/pep-3132/
-- 更新 --
根据下面的评论和答案,我原本期望解包会返回一个元组,因为在函数参数中,展开参数始终是元组而不是列表。
正如Jason所指出的,在解包过程中无法提前知道结果的长度,因此从实现上讲,万能的捕捉必须从动态附加的列表开始。将其转换为列表大部分时间都是浪费努力。
从语义上讲,我更喜欢保持元组的一致性。