Python 中有一种叫做“扩展赋值”的东西。
长话短说,您可以通过赋值来扩展迭代。例如,此代码计算并扩展右侧(实际上是一个元组),并将其分配给左侧:
a, b = 3, 5
Or
tup = (3, 5)
a, b = tup
这意味着在 Python 中你可以用一行交换两个变量:
a, b = b, a
它评估右侧,创建一个元组(b, a)
,然后展开元组并分配给左侧。
有一个特殊的规则如果任何左侧变量“重叠”,则赋值从左到右.
i = 0
l = [1, 3, 5, 7]
i, l[i] = 2, 0 # l == [1, 3, 0, 7] instead of [0, 3, 5, 7]
所以在你的代码中,
node.next, node.prev = self.next, self
这个任务是并行的,因为node.next
and node.prev
不要“重叠”。但对于下一行:
self.next, self.next.prev = node, node
As self.next.prev
依赖于取决于self.next
,它们“重叠”,因此self.next
首先被分配。