Python arg解包之间的区别如下所示

Python arg解包之间的区别如下所示,python,language-lawyer,Python,Language Lawyer,以下两种说法的区别是什么: >>> from_vargs_1 = lambda *x: list(x) >>> from_vargs_2 = lambda *x: x 换句话说,使用显式列表或不使用它。相等元组(来自变量1(…)==来自变量2(…)是否始终保持不变?尝试它会更快 from_vargs1 = lambda *x: list(x) from_vargs2 = lambda *x: x x = from_vargs1( 1, 2, 3 ) y =

以下两种说法的区别是什么:

>>> from_vargs_1 = lambda *x: list(x)
>>> from_vargs_2 = lambda *x: x

换句话说,使用显式
列表或不使用它。相等
元组(来自变量1(…)==来自变量2(…)
是否始终保持不变?

尝试它会更快

from_vargs1 = lambda *x: list(x)
from_vargs2 = lambda *x: x
x = from_vargs1( 1, 2, 3 )
y = from_vargs2( 1, 2, 3 )
print( x )
print( y )
输出:

[1, 2, 3]
(1, 2, 3)

是的,当您使用
*x
时,函数的位置参数将作为元组传递。

@Time--谢谢您的回答。是的,我试过了,得到了这样的结果:
>>元组(来自变量1(*x))==来自变量2(*x)
True
。但我想找一种比“我试过一次,结果也一样”更具权威性的东西。这是一种足够公平的抱怨。下面是Python文档中的一页。大约2/3的时候,它说
*x
符号被初始化为一个包含额外参数的元组。我不明白你在这里担心的是什么可能性,或者为什么你觉得不满意或者没有足够的证据来尝试代码。我添加了[language lawyer]标签,因为我认为这正是您试图问的问题,但实际上这比您预期的要简单。考虑到您理解
x
是一个元组,问题似乎不是关于参数解包,而是“对于元组
x
tuple(列表(x))是否总是正确的?”==x
?“在这种情况下,答案更清楚地是“是的,当然”。我之所以这样说,是因为两个lambda都以相同的方式接受它们的参数,所以参数解包不会导致任何差异。