You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python代码片段未输出1->2->3?关于求值顺序的疑问

问题原因解析

核心原因是Python的多重赋值规则:先完整计算右侧所有表达式的值,再按从左到右的顺序依次赋值给左侧的目标。

我们一步步拆解关键代码A.next, A = B, A的执行过程:

  • 计算右侧值:先获取B(指向4->5->6的节点)和当前的A(指向1->2->3的节点),得到元组(B, 原A)。此时两个值都被临时保存,后续不管左侧怎么操作,这两个值不会变。
  • 赋值第一个左侧目标A.next:此时A还没被重新赋值,仍然指向原来的1节点。所以把B赋值给这个1节点的next属性——也就是原来1节点的next从指向2节点,改成了指向4节点。
  • 赋值第二个左侧目标A:把之前保存的原A(也就是那个1节点)赋值给变量A,所以A最终还是指向1节点。
  • 执行A.print():从1节点开始遍历,它的next已经是4节点,所以输出顺序就是1->4->5->6。

如果想要让A.print()输出1->2->3,直接去掉A.next, A = B, A这行代码即可;如果你的意图是让变量A指向B的链表,直接写A = B就行,此时会输出4->5->6。

内容的提问来源于stack exchange,提问作者Robert Lipton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:51:22