【发布时间】:2016-06-08 18:53:31
【问题描述】:
这个问题源于PEP 448 -- Additional Unpacking Generalizations,据我所知,它存在于 Python 3.5 中(而不是向后移植到2.x)。具体而言,在缺点部分中,指出了以下内容:
虽然
*elements, = iterable导致elements成为list,elements = *iterable,导致elements成为tuple。其原因可能会使不熟悉该构造的人感到困惑。
确实成立,对于iterable = [1, 2, 3, 4],第一种情况产生list:
>>> *elements, = iterable
>>> elements
[1, 2, 3, 4]
而对于第二种情况,tuple 被创建:
>>> elements = *iterable,
>>> elements
(1, 2, 3, 4)
不熟悉这个概念,我很困惑。谁能解释这种行为?加星号的表情是否会根据其所在的一侧而有所不同?
【问题讨论】:
标签: python python-3.x iterable iterable-unpacking