这个问题源于PEP 448- 其他解包通用化,并且据我所知(并且没有后端移植到2.x),它存在于Python 3.5中.具体而言,在" 缺点 "一节中,注意到以下内容:
虽然
*elements, = iterable原因elements是一list,elements = *iterable,导致elements成为一个tuple.造成这种情况的原因可能会让那些不熟悉这种结构的人感到困惑.
确实如此,因为iterable = [1, 2, 3, 4]第一种情况产生了list:
>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
而对于第二种情况tuple,创建了一个:
>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
Run Code Online (Sandbox Code Playgroud)
由于不熟悉这个概念,我很困惑.谁能解释这种行为?已加星标的表达方式是否会根据其所在的方式而有所不同?