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

Python中a = d['John'] = {}这类字典连续赋值的工作原理解析

Python链式赋值 a = d['John'] = {} 的工作原理

你看到的a = d['John'] = {}是Python里的链式赋值语法,它的执行逻辑和你误以为的嵌套赋值完全不同:

  1. 先执行最右侧的表达式{},创建一个空字典对象,这个对象在内存里有唯一的引用地址。
  2. 从右往左依次完成赋值操作:
    • 第一步:把这个空字典对象赋值给d['John']——也就是给字典d新增(或修改)键'John',让它指向刚才创建的空字典。
    • 第二步:把同一个空字典对象赋值给变量a。

这就意味着,a和d['John']指向的是同一个内存中的字典对象,所以后续修改a['age'] = 20时,本质是在修改这个共享的字典对象,自然d['John']的内容也会同步变化。

你之前疑惑的a = (d['John'] = {})确实不合法,因为Python里的赋值语句不是表达式,不能嵌套使用,但链式赋值是Python专门支持的语法,它等价于下面的代码:

temp = {}
d['John'] = temp
a = temp

这里用临时变量temp存储右侧创建的字典对象,再分别赋值给两个目标,和链式赋值的效果完全一致,只是链式赋值写法更简洁。

内容的提问来源于stack exchange,提问作者starriet 차주녕

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:09:53