直接赋值:其实就是对象的引用(别名)。
a = b = {} b.setdefault('1', {}) # 等同于 b['1'] = {} b = {} # b = b['1'] b.setdefault('3', {}) print(a) 打印结果: {'1': {}}
a = b = {} b.setdefault('1', {}) # 等同于 b['1'] = {} # b = {} b = b['1'] b.setdefault('3', {}) print(a) 打印结果:{'1': {'3': {}}}
两张图, 第3行, 字典b 赋值方式不同, 打印字典a 结果不同;
图一, b = {} , 重新分配内存空间;
图2 , b = b['1'] , 相当于把第2行 { } 空字典的引用指向了 b
参考:Python 直接赋值、浅拷贝和深度拷贝解析 | 菜鸟教程