我正在浏览一些旧代码,试图了解它的作用,我遇到了这个奇怪的声明:
*x ,= p
p
是此上下文中的列表。我一直在试图弄清楚这句话的作用。据我所知,它只是将 x
设置为 p
的值。例如:
p = [1,2]
*x ,= p
print(x)
只是给
[1, 2]
那么这与 x = p
有什么不同吗?知道这个语法在做什么吗?
最佳答案
*x ,= p
基本上是 x = list(p)
的混淆版本,使用 extended iterable unpacking . x
之后的逗号用于使赋值目标成为一个元组(不过它也可以是一个列表)。
*x, = p
is 与 x = p
不同,因为前者会创建 copy 的 p
(即一个新列表),而后者创建对原始列表的 reference。举例说明:
>>> p = [1, 2]
>>> *x, = p
>>> x == p
True
>>> x is p
False
>>> x = p
>>> x == p
True
>>> x is p
True
关于python - 理解 *x ,= lst,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43190992/