链式赋值,例如 x = y = somefunction(),可能会因为偏离预期的求值顺序而令人困惑。与 x = somefunction() 和 y = somefunction() 按顺序执行的假设相反,链式赋值遵循不同的模式。
在链式赋值中,最左边的目标变量首先被赋值。这意味着以下代码:
<code class="python">x = y = somefunction()</code>
相当于:
<code class="python">temp = somefunction() x = temp y = temp</code>
如您所见,somefunction() 返回的值首先存储在临时变量(temp ),然后分配给 x 和 y。
需要注意的是,在链式分配中,相同的对象总是分配给每个目标。在处理列表等可变对象时,这可能会导致意想不到的后果。例如,以下代码:
<code class="python">x = y = []</code>
将相同的列表对象分配给 x 和 y。这意味着对 x 所做的任何修改也将反映在 y 中。
要避免此问题,请始终为可变变量创建不同的对象,如以下正确示例所示:
<code class="python">x = [] y = []</code>
以上是以下是一些基于问题的标题,它们抓住了所提供文章的精髓: * Python 中的链式赋值:为什么 `x = y = somefunction()` 会这样工作? * Python 如何处理 Chai的详细内容。更多信息请关注PHP中文网其他相关文章!